Linux文本处理工具(grep、sed、awk)

grep工具

文本处理说明
grep -c ‘str’ /tmp/test打印符合要求的行的数目。
grep -i ‘str’ /tmp/test输出符合要求的行,忽略str大小写。
grep -n ‘str’ /tmp/test输出符合要求的行及行号。
grep -v ‘str’ /tmp/test输出不符合要求的行。
grep -A2 ‘str’ /tmp/test输出符合要求的行以及下面2行。
grep -B2 ‘str’ /tmp/test输出符合要求的行以及上面2行。
grep -C2 ‘str’ /tmp/test输出符合要求的行以及上下各2行。
grep ‘str’ /tmp/test在文件 ‘/tmp/test’ 中查找 "str"并打印显示。
grep ‘^str’ /tmp/test在文件 ‘/tmp/test’ 中查找以 “str” 开始的行并打印显示。
grep ‘[0-9]’ /tmp/test查找 ‘/tmp/test’ 文件中所有包含数字的行并打印显示。
grep -v ‘[0-9]’ /tmp/test查找 ‘/tmp/test’ 文件中所有不包含数字的行并打印显示。
grep ‘[^0-9]’ /tmp/test查找 ‘/tmp/test’ 文件中所有非纯数字的行并打印显示。
grep ‘^ [^0-9]’ /tmp/test输出不以数字开头的行,[0-9]表示以数字开头的行,[0-9]表示除0-9之外的字符)。
grep ‘r…t’ /tmp/test输出r和o之间有两个任意字符的行,(.表示任意字符)。
grep ‘c*’ /tmp/test输出含有0个或多个字符c的行,(*表示0个或多个前面的字符)。
grep ‘o{2}’ /etc/passwd符号{}里的数字表示前面字符o要重复2次。
grep ‘o{1,3}’ /etc/passwd符号{}里的数字表示前面字符o要重复的次数,{1,3}表示o重复1次到3次。
grep str -r /tmp/*在目录 ‘/tmp’ 及其子目录中查找 “str”。
grep -v ‘^#’ /etc/inittab过滤掉所有以#开头的行和所有空行(#表示行的开始,KaTeX parse error: Expected group after ‘^’ at position 14: 表示行的结尾,空行可以用’^̲’表示)。
egrep ‘ao+’ /etc/passwd输出一个或多个含有前面的字符o的行。
egrep ‘rao?’ /etc/passwd输出0个或1个含有前面的字符o的行。

sed工具

命令功能
sed -n 'n’p file打印file文件第n行内容,'n’表示第n行。
sed -n '1,$'p file打印file文件所有行。
sed -n '1,3’p file打印file文件第1行到第3行。
sed -n '/root/'p file打印file文件中含有’root’字符串的行,特殊符号^、$、.、*使用同grep。
sed -n -e '1’p -e '/root/'p file打印file文件第一行和含字符串’root’的行。
sed '1’d file打印时不显示file文件第一行。
sed '2,4’d file打印时不显示file文件第2到第4行。
sed '/root/'d filw打印时不显示file文件中含’root’字符串的行。
sed ‘7s@o@x@g’ file字符’o’替换成’x’,‘s’表示替换,g表示本行全部替换,不加g只替换本行出现的第一个’o’,’/‘分隔符,也可使用’#’、’@’。
sed ‘7,9s/o/x/g’ file字符’o’替换成’x’,‘s’表示替换,g表示7到9行全部替换,不加g只替换每行出现的第一个’o’,’/‘分隔符,也可使用’#’、’@’。
sed ‘1,$s/[0-9]//g’ file打印时不显示file文件中所有的数字。
sed ‘s/ rot.∗bash/ \3\2\1/’ file调换’rot’与’bash’字符串的位置,特殊符号前必须加上脱意字符’’,’()'表示把要替换的字符打包成一个整体。
sed ‘s/222/123&/’ file在字符串’222’行首加上指定内容’123’。
sed ‘s/222/&123/’ file在字符串’222’行尾加上指定内容’123’。
sed ‘s/^.*$/123&/’ file在所有行行首加上指定内容’123’。
sed ‘s/^.*$/&123/’ file在所有行行尾加上指定内容’123’。
sed -i ‘s/ro/ot/g’ file修改文件内容,字符串’ro’替换成’ot’。

awk工具

命令功能
awk F ‘:’ ‘{print $1}’ file打印截取的文档某段内容,-F作用是指定分隔符,没有-F则以空格或tab为分隔符,$1为第一个字段,$0表示整行。
awk F ‘:’ ‘{print $1"%"$2}’ file打印截取的文档某段内容,print可以打印自定义内容,但自定义内容要用双引号括起来。
awk ‘/ot/’ file打印含’ot’字符串的行。
awk -F ‘:’ ‘$1~/oo/’ file打印第一段含有’oo’ 字符串的行。
awk -F ‘:’ '/root/ {print $1,$3} /test/ {print $1,$3} ’ /etc/passwd多次匹配,现匹配’root’,在匹配’test’,只打印所匹配的段。
awk -F ‘:’ ‘$3>=500’ /etc/passwd打印第3段大于等于500的行,500表示数字,"500"表示字符串。
awk -F ‘:’ ‘$3<$4’ /etc/passwd打印第4段大于第3段的行。
awk -F ‘:’ ‘$3>“5” && $3<“7”’ /etc/passwd打印第3段大于5并且小于7的行。
awk -F ‘:’ ‘$3>“5”
awk -F ‘:’ ‘{print NF}’ /etc/passwd打印分隔符分隔后每行有多少段,$NF表示最后一段。
awk -F ‘:’ ‘{print NR}’ /etc/passwd打印行号,NR可作为判断条件。
awk ‘NR>20’ /etc/passwd打印第20行以后的所有行。
awk -F ‘:’ ‘$1=“root”’ /etc/passwd打印第一段的值替换成"root"后的文件。
awk -F ‘:’ ‘{$7=$3+$4;print $0}’ /etc/passwd计算第3段加第4段的和并打印整行。
awk -F ‘:’ ‘{(tol=tol+$3)};END{print tol}’ /etc/passwd计算并打印第3段的总和,END表示所有的行都已经执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值