`
xitong
  • 浏览: 6195606 次
文章分类
社区版块
存档分类
最新评论

【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'


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics