有关linux三剑客之sed的一道练习题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关linux三剑客之sed的一道练习题相关的知识,希望对你有一定的参考价值。

1.1 取出a.txt中的908这三个数字:

实例:

[[email protected] tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[[email protected] tmp]#


结果是:

[[email protected] tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[[email protected] tmp]#

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt|sed -n ‘3p‘

908

[[email protected] tmp]#


操作过程(仅供参考):

[[email protected] tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[[email protected] tmp]# sed ‘3p‘ a.txt                           忘记加参数-n取消默认输出

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

i am zjc 1046(88)908 jiayou

[[email protected] tmp]# sed -n ‘3p‘ a.txt         加了参数后恢复正常只输出匹配的内容

i am zjc 1046(88)908 jiayou

[[email protected] tmp]# sed -n ‘3s#^.*88)\(.*)jia.*$#\1#gp‘ a.txt  转义符加的不对

sed: -e expression #1, char 27: Unmatched ( or \(

[[email protected] tmp]# sed  ‘3s#^.*88)\(.*) jia.*$#\1#g‘ a.txt    转义符加的还是不对

sed: -e expression #1, char 26: Unmatched ( or \(

[[email protected] tmp]# sed  ‘3s#^.*88)\(.*\) jia.*$#\1#g‘ a.txt    转义符正确后正常了

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb                 但发现默认输出了默认输出,原因是没有加 -n ?

908

[[email protected] tmp]# sed -n  ‘3s#^.*88)\(.*\) jia.*$#\1#g‘ a.txt 加了-n 竟然没内容了

[[email protected] tmp]# sed -n  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt 还没找到原因

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘a.txt   还没找到原因

aaaaaaaaaaaaa                                        

bbbb bbbbbbbbbbbbbb                                                       还没找到原因

908

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘a.txt   还没找到原因

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[[email protected] tmp]# sed   ‘s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt    还没找到原因

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘a.txt   还没找到原因

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[[email protected] tmp]# sed -n   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘a.txt  还是觉得是-n

[[email protected] tmp]#

[[email protected] tmp]# sed -nr  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt  是没加-r吗

sed: -e expression #1, char 32: Unmatched ) or \)

[[email protected] tmp]# sed -n  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt  还没找到原因

[[email protected] tmp]# sed -n  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt|xargs ls

还没找到原因

a.txt p.txt  test.txt

[[email protected] tmp]# sed -n  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt|xargs cat 

还没找到原因

[[email protected] tmp]# sed -n  ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt       

还没找到原因

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘a.txt         还没找到原因

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt|sed ‘3p‘

再加一个sed

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

908

[[email protected] tmp]# sed   ‘3s#^.*88)\([0-9].*\) jia.*$#\1#g‘ a.txt|sed -n ‘3p‘

取消默认输出

908

[[email protected] tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[[email protected] tmp]#

[[email protected] tmp]# sed ‘3s#^.*88)\([0-9].*\)jia.*$#\1#gp‘ a.txt  哦,原来忘记了加p

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

908

[[email protected] tmp]# sed -n‘3s#^.*88)\([0-9].*\) jia.*$#\1#gp‘ a.txt 加个-n 就o了

908

[[email protected] tmp]#


本文出自 “[email protected]” 博客,请务必保留此出处http://jinchengzheng.blog.51cto.com/10798482/1843245

以上是关于有关linux三剑客之sed的一道练习题的主要内容,如果未能解决你的问题,请参考以下文章

Linux文本处理工具之grep sed简概

linux文本三剑客之sed命令详解

linux三剑客之sed史上最实用教程!

linux三剑客之sed

linux三剑客之sed入门详解

Linux文本三剑客之sed