替换、删除、新增、提取特定行
分析关键字的使用,统计
sed 工具
sed [-nefr] [动作]
-n:经过sed处理的行被列出来
-e:命令行模式进行sed编辑
-f:直接将sed动作写在一个文件内,-f filename 可以执行filename中的sed动作
-r:sed动作支持扩展型正则表达式
-i:直接修改读取的文件内容,而非屏幕输出
动作:
a:新增
c:替换
d:删除
i:插入
p:打印
s:替换(可搭配正则表达式)
(1)以行为单位增加删除
如:
列出并打印行号,同时删除2~5行
nl file | sed '2,5d'
列出并打印行号,同时删除3~最后一行
nl file | sed '3,$d'
第2行后面增加‘hello world’
nl file | sed '2d, hello world'
第2行前面增加‘hello world’
nl file | sed '2i, hello world'
(2)以行为单位替换与显示
如:
将2~5行内容替换成No 2-5 number
nl file | sed '2,5c No 2-5 number'
列出5~7行
nl file | sed -n '5,7p'
(3)部分数据的查找与替换
sed 's/要被替换的字符串/新的字符串/g'
如:一行字符串为:
intel addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
想要得到192.168.1.100,可以这样写
sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
删掉空白行
sed '/^$/d'
(4)直接修改文件内容(危险操作)
如:
将每一行结尾的.替换成!
sed -i 's/\.$/!/g' file
最后一行添加“This is a test”
sed -i '$a This is a test'
awk 工具
词频统计
awk -F '\t' '{count[$1]++}END{for(i in count){print i count[i]}}'
diff
比较两个文件或者两个目录之间的差异
diff [-bBi] from-file to-file
patch
和diff配合使用,用于新旧版本更新