Linux编辑类命令

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是对文件中的数据一行为单位进行查找。

你可能感兴趣的:(linux,命令,编辑)