cut命令
cut:裁剪字符,以行为单位。
cut -d '分隔字符' -f 选取范围
按分隔字符将字符串分为多段,并选取指定段
注:1、分隔字符仅可为一个;
2、若需选取多段,以逗号分隔多个段 如:cut -d ':' -f 3,5
3、段号从1开始
cut -c 起始位置-终止位置
选取以行的从起始位置到终止位置之间的字符(包含)
终止位置可以不指定,直接为空,表示选取到行尾
sed命令学习
sed [-nefr] [动作]
参数
|
格式
|
功能
|
-n
|
|
只输出经过处理的行,其余的不输出
|
-i
|
sed -i 's/\.$/\!/g' regular_experss.txt
|
直接修改读取的文件,并将修改结果输出至文件
|
关于动作:
'n1[,n2]function'
参数 |
格式
|
功能
|
a
|
sed '2a drink tea' |
在指定行的下一行增加指定数据
|
i
|
sed '3i drink beer'
|
在指定行的上一行增加指定的数据
|
s
|
sed 's/old/new/g'
|
将old字符串替换为new字符串,其余为固定格式 |
d
|
sed '2,5d'
|
删除指定行,如果指定两个,则表示删除一个区间内的数据
|
p
|
sed -n '5,7p'
|
打印指定行
|
awk命令学习
格式:awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
每一行的每一个字段都是由变量名称的,$1、$2等,依次是第一列、第二列。。。
$0代表整行数据。
awk的处理流程:
1、读入一行数据,并将那一行数据填入$0、$1、$2等变量中;
2、依据条件类型的限制,判断是否需要进行后面的动作;
3、做完所有的动作与条件类型;
4、若还有后续行,则重复1-3的动作,直到所有数据都读完。
变量名称 |
含义 |
NF
|
每一行拥有的字段总数
|
NR
|
目前awk所处理的是第几行数据
|
FS
|
目前的分隔符,或者设置分隔符
|
备注:这些变量可以直接写,同时不需要$,必须要大写
last -n 5 | awk '{print $1 "\t lines:"NR "\t columes:"NF}'
设置分隔符为“:”,打印出第三列<10,的所有行的第一列和第三列
cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t" $3}'
备注:设置的分隔符,仅对第二行开始的以后行起作用
cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t" $3}'
让设置的分隔符一开始就生效
第一行打印表头,从第二行开始计算总和并打印出来。
cat pay.txt | awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"}NR>=2{total=$1+$2+$3+$4;printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}'
备注:1、{}内的动作如果需要多个命令辅助时,需要利用“;”或者回车分隔开
2、awk中的变量可以直接使用,不需要加上$符号
cut与awk都数据以行为单位,按某个字符进行分割,然后显示指定列。但是awk可以有逻辑处理而cut则不行。
grep是对文件中的数据一行为单位进行查找。