- -i:忽略大小写
- --color:匹配到的字符用其他颜色显示出来
- -v:显示没有匹配到的行
- -o:只显示被模式匹配到的字符串,不显示行
- -A n:显示该行及其后n行
- -B n:显示该行及其前n行
- -C n:显示该行及其前后各n行
sed 用来把文档或字符串里的文字经过一系列编辑命令转换为另一种格式输出
行数:
- startline,endline:开始行,结束行
- /RegExp/:扩展正则表达式
- /pattern1/,/pattern2/:从第一次匹配parttern1行开始,到第一次匹配到pattern2行结束
- linenumber
- startline,+N:从startline开始,向后N行结束
动作:
- p:显示符合条件的行(不适用-n被匹配到的行会显示两遍,sed会把处理的信息输出)
- a xxx:新增,在指定的行后面追加新行,内容为“xxx”(下一行)
- c xxx:替换,在c后面可以接字符串
- d:删除,删除符合条件的行
- i xxx:插入,在指定的行前面追加新行,内容为“xxx”(上一行)
- r file:将指定的文件内容添加到符合条件的文件中
- w file:将地址指定范围的行另存至指定的文件中
- s /被替换字符/替换字符/[i/g]:查找并替换,默认只替换每行中第一次被模式匹配到的字符
g:全局替换 i:忽略字符大小写
# Read from the file file.txt and output the tenth line to stdout.
cat file.txt | sed -n '10p'
nl wc.txt | sed '2i zhang'
nl wc.txt | sed '2s/hello/bonjour/i'
awk提供了强大的功能:正则表达式、样式装入、流控制、数学运算符、进程控制语句、内置变量函数。
awk [options] 'script' file1,file2,......
awk [options] 'PATTERN{action}' file1,file2,......
awk 'BEGIN{OFS=","}{print $1,$2}' wc.txt
- NR:awk命令所处理的记录行数(可能有多个)
- NF:当前记录的字段数
- FNR:当前处理文件的行数
- ARGV:数组,保存命令行本身的字符串
- ARGC:awk命令的参数个数
- FILENAME:正在处理的文件名称
- ENVIRON:当前shell环境变量及其关联数组
awk 'BEGIN{print ENVIRON["PATH"]}'
print item1,item2,......
printf format item1,item2,......
与print不同,printf需要指定格式(item输出格式)
(1) 读入第一行,并将第一行的数据填入到$0,$1,$2等变量当中
每一行的每个变量都是有变量名称的,$1,$2,$3......($1表示第一列,$0表示一整行)
last -n 5 | awk '{print $1,$3}'
last -n 5 | awk '{print $1,NR,NF}'
--------------------------------------------------------------------------------------------------------
cat wc.txt |
sed 's/[,.:;/!?]/ /g' |
awk '{for(i=1;i<NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}'