您的位置:首页 > 运维架构 > Shell

Shell编程之字符截取命令

2017-09-11 22:42 253 查看
AWK命令awk ‘条件1(动作1)条件2(动作2)...’ 文件名

条件(pattern)
一般使用关系表达式作为条件
x>10判断x是否大于10
x>=10大于等于
x<=10小于等于

动作(Action)
-格式化输出
-流程控制语句

awk使用示例:
awk '{printf $1 "\t" $2 "\n"}'

awk 'BEGIN{printf "test"}{printf $1}' //在输出语句前输出指定字符串

awk 'END{printf "test"}{printf $1}'//在输出语句后输出指定字符串

FS内置变量
cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\n"}'
//BEGIN在读取数据前先指定分隔符
FS内置变量设定分隔符

关系运算符
cat /etc/passwd | awk 'BEGIN{FS=":"}$3<300{printf $1 "\t" $3 "\n"}'

awk常用的内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符

CUT命令cut字段提取命令
cut[选项] 文件名
选项:
-f 列号:提取第几列
-d 分隔符:按照指定分隔符分割列

df -h| cut -f 1(无法提取列)
cut命令适用比较规律的分割字段,如制表符

实际命令练习,备份创建过的用户
grep "/bin/bash" /etc/passwd | grep -v "root" | cut -f 1 -d ":" user.log

SED命令
sed [选项] '[动作]' 文件名
选项:
-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理过的行输出到屏幕

-e:允许对输入数据应用多条sed命令编辑

-i:用sed命令的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:
-a:追加,在当前行后添加一行或多行
-c:行替换,用c后面的字符串替换原数据行
-i:插入,在当前行前插入一行或多行,d:删除指定行
-p:打印,输出指定的行
-s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g"(和vim中的替换格式类似)// sed '5s/mbb/mb/g' user.log

printf命令(输出命令)printf命令(格式化输出命令)

printf ‘输出类型输出格式’ 输出内容

输出类型:
—%ns:输出字符串。n是数字指代输出几个字符
—%ni:输出整数。n是数字指代输出几个数字
—%m.nf:输出浮点数,m和n是数字,指代输出的整数位和小数位。如%8.2f代表共输出8位数,其中2位数是小数,6位是整数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 编程 shell