Linux文本三剑客

2018/07/24 Linux

在Linux系统下工作的朋友都会遇到文本处理的事情,通常可以使用vim等编辑工具,但是,如果你学会了grep、awk、sed这三个神器,妈妈再也不用担心我的文本处理了。

grep

文本过滤工具,支持正则表达式查找,输出匹配的行。命令格式:

grep [option] pattern filename

常用例子:

#-n显示行号,-i忽略字符大小写
grep -n -i "abc" filename

#-v反向匹配,-r递归搜索文本
grep -v -r "abc" dirname/

sed

sed是一种流编辑器,支持正则表达式使用。默认只处理模式空间,不处理原数据,且sed是针对一行行数据来进行处理的。命令格式为:

sed [option] 'command' filename

command格式:地址界定+编辑命令

地址界定:
空地址---对全文每一行编辑
数字[,数字]---指定行号或行号范围
/pattern/---匹配行编辑
$---最后一行编辑

编辑命令:
d---删除
a---下一新行追加字符串
i---上一新行插入字符串
c---字符串替换某行
s---在行中搜索替换

常用例子:

# g表示全局替换, -i表示原地替换;
sed -i 's/oldstring/newstring/g' filename
#最后一行添加,输出只作处理的行
sed -n '$a hello world' filename

awk

awk是文本格式化工具,用于生成文本报告或对文本列处理。

# -F分割域
#按空格或逗号分割每行,并打印第1列(分割域为$1...),$0表示所有域
awk -F '[ ,]' '{printf("%s:%s\n",$4,$10)}' my.txt
#按冒号分割每行,搜索定位到以hello开头的行,打印分割域3,从第2个字符开始,打印6个
awk -F ':' '/^hello/ {print substr($3, 2, 6)}' my.txt

后话

Linux下的命令超级多,记起来麻烦,不记得了可以来这查查,命令敲多了,就记得了。

参考

Search

    欢迎关注我的微信号

    想摘月亮的老刘

    Table of Contents