正则三剑客(sed,awk)

sed(查找替换)

  •  
     -n的选项的作用是只显示我们要打印的行,其他内容不显示
     sed -n '5'p test.txt   显示第五行的内容
     sed -n '1,5'p test.txt  显示1到5行的内容
     sed -n '1,$'p test.txt    显示1到尾行的内容
     sed -n '/root/'p test.txt   显示包含root的行数
     sed -n '/^1/'p test.txt   显示以1开头的行数
     sed -n 'in$'p test.txt     显示以in结尾的行数
     sed -n '/r..o/'p test.txt
     sed -n 'oo*'p test.txt
     -e的作用可以实现多个行为
     sed -e '1'p -e '/111/'p -n test.txt   显示第一行并查找包含111的行数
     sed '1'd test.txt   删除第一行
     sed '1,3'd test.txt   删除1到3行
     sed '/oot/'d test.txt   删除含有oot的行数
     sed '1,2s/ot/to/g' test.txt   s表示替换的动作,把1到2行的ot换成to,g表示全局替换,不加g就只换了本行的第一个。除了用/来分隔也可以用@,#,不对文件生效,只是打印出来而已,最下面有讲怎么生效的
     sed 's#ot#to#g' test.txt
     sed 's/[0-9]//g' test.txt  把所有数字删除
     sed 's/[a-zA-Z]//g' test.txt   把所有字母删除
     sed -r 's/(rot)(.*)(bash)/\3\2\1/' test.txt    -r的选项就是小括号不用加转义符了。1.2.3表示的是前面的三个参数位置变成怎么样,假如我前面的顺讯是a:b:c,然后我选择321的顺序就变成了c:b:a了
     sed  -r 's/(.*)/123\1' test.txt  在最前面加123,注意\1的作用
     sed  -r 's/(.*)/\1123' test.txt   在最后面加123,注意\1的作用
     sed 's/^.*$/123&/' test.txt    在前面的加123,更上面的结果是一样的,只是写法不同
     sed 's/^.*$/&123/' test.txt    在最后面加123
     sed -i 's/ot/to/g' test.txt    -i的作用就是直接在文件生效 

awk

  •  -F的作用就是制定以什么为分隔符,例子为以:为分隔符
     head -n2 test.txt|awk -F ':' '{print $1}'  前面两行以:为分隔符,打印第一个参数
     head -n2 test.txt|awk -F ':' '{print $0}'  $0表示整行
     awk -F ':' '{print $1"#"$2"#"$3"#"$4}'    指定输出的是以#为分隔符的,就是自定义打印的内容了。
     awk '/oo/' test.txt   含有00的行都打印出来
     awk -F ':' '$1 ~/oo/' test.txt      :为分隔,第一个参数含有00的就打印出来
     awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt   包含root的就打印第一个跟第三个参数,包含test的就打印第一根第三个参数
     awk -F ':' '$3=="0"' /etc/passwd  
     awk -F ':' '$3>="500"' /etc/passwd
     awk -F ':' '$3>=500' /etc/passwd 
     awk -F ':' '$7!="/sbin/nologin"' /etc/passwd
     awk -F ':' '$3<$4' /etc/passwd
     awk -F ':' '$3>"5" && $3<"7"' /etc/passwd
     awk -F ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd
     head -5 /etc/passwd |awk -F ':' '{OFS="#"} {print $1,$3,$4}‘
     awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' /etc/passwd
     head -n3 /etc/passwd | awk -F ':' '{print NF}‘
     head -n3 /etc/passwd | awk -F ':' '{print NR}‘
     awk 'NR>40' /etc/passwd
     awk -F ':' 'NR<20 && $1 ~ /roo/' /etc/passwd
     head -n 3 /etc/passwd |awk -F ':' '$1="root"‘
     awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd
     awk -F ':' '{if ($1=="root") {print $0}}' /etc/passwd
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值