【shell编程】sed 常见练习题总结

【1】删除文件每行的第一个字符。
[root@seker ~]# sed 's/\(.\)\(.*\)/\2/' /etc/passwd | tail -3
[root@uplooking ~]# sed 's/.//' /etc/passwd | tail -3
 
【2】删除文件每行的第二个字符。
[root@seker ~]#  sed 's/\(.\)\(.\)\(.*\)/\1\3/' /etc/passwd |tail -3
[root@uplooking ~]# sed 's/.//2'  /etc/passwd | tail -3


【3】删除文件每行的最后一个字符。

[root@seker ~]# sed 's/\(.*\)\(.\)/\1/' /etc/passwd | tail -3
[root@uplooking ~]# sed 's/.$//' /etc/passwd | tail -3

【4】删除文件每行的倒数第二个字符。
[root@seker ~]# sed 's/\(.*\)\(.\)\(.\)/\1\3/' /etc/passwd | tail -3


【5】删除文件每行的第二个单词。

[root@seker ~]#echo hello 123 linux |sed 's/\([a-Z]\+\)\([^a-Z]\+\)\([a-Z]\+\)\([^a-Z]*\)\(.*\)/\1\2\4\5/' 
[root@uplooking ~]#  sed 's/\([a-Z]\+\)\([^a-Z]\+\)\([a-Z]\+\)\(.*\)/\1\2\4/' /etc/passwd | tail -2

【6】删除文件每行的倒数第二个单词。
[root@seker ~]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*$)/\1\2\4\5/' /etc/passwd| tail -3

【7】删除文件每行的最后一个单词。
 [root@seker ~]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*$)/\1\2\3\4/' //etc/passwd | tail -3
 
【8】交换每行的第一个字符和第二个字符。
[root@seker ~]# sed -r 's/(.)(.)(.*)/\2\1\3/' /etc/passwd | tail -3
[root@uplooking ~]# sed -r 's/(.)(.)/\2\1/' /etc/passwd | tail -3

【9】交换每行的第一个字符和第二个单词。???????
sed 's/\(^[a-Z0-9]\)\([a-Z0-9]*[^a-Z0-9]\{1,\}\)\([a-Z0-9]\{1,\}\)/\3\2\1/g'  /etc/passwd |tail -3

【10】交换每行的第一个单词和最后一个单词。
[root@seker ~]# sed -r 's/([a-Z]+)([^a-Z]+)(.*)([^a-Z]+)([a-Z]+)([^a-Z]*$)/\5\2\3\4\1\6/' /etc/passwd | tail -3

【11】删除一个文件中所有的数字。

[root@seker ~]# sed 's/[0-9]//g' /etc/passwd | tail -3

【12】删除每行开头的所有空格。

sed -r 's/^ +//g' /etc/passwd

【13】用制表符替换文件中出现的所有空格。
sed -r 's/ +/\t/g' /etc/passwd

【14】把所有大写字母用括号()括起来。
sed -r 's/([A-Z])/(\1)/g' /etc/passwd

【15】打印每行3次。
sed  'p;p' /etc/passwd

【16】隔行删除。
sed  '0~2 {=;d}' /etc/passwd

【17】把文件从第22行到第33行复制到第56行后面。
sed  '22h;23,33H;56G' /etc/passwd

【18】把文件从第22行到第33行移动到第56行后面。
sed  '22{h;d};23,33{H;d};56g' /etc/passwd

【19】只显示每行的第一个单词。
[root@seker ~]# sed 's/\([a-Z]\+\)\([^a-Z]\+\)\(.*\)/\1/' /etc/passwd | tail -3
[root@uplooking ~]# sed  's/\([a-Z]\+\)\(.*\)/\1/' /etc/passwd | tail -3

【20】打印每行的第一个单词和第三个单词。
[root@seker ~]# sed 's/\([a-Z]\+\)\([^a-Z]\+\)\([a-Z]\+\)\([^a-Z]\+\)\([a-Z]\+\)\([^a-Z]\+\)\(.*\)/\1\t\5/' /etc/passwd | tail -n 3

【21】将格式为    mm/yy/dd    的日期格式换成   mm;yy;dd
[root@seker ~]# date '+%m/%y/%d' |sed 's#/#; #g'

【21】去掉空行和以#号开头的行

sed  -e '/#/d' -e '/^$/d' dnsmasq.conf


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值