有關linux三劍客之sed的一道練習題

1.1 取出a.txt中的908這三個數字:

實例:express

[root@zhengjincheng tmp]# cat a.txt ide

aaaaaaaaaaaaaspa

bbbb bbbbbbbbbbbbbbit

i am zjc 1046(88)908 jiayouio

[root@zhengjincheng tmp]#class


結果是:test

[root@zhengjincheng tmp]# cat a.txt sed

aaaaaaaaaaaaamargin

bbbb bbbbbbbbbbbbbbtop

i am zjc 1046(88)908 jiayou

[root@zhengjincheng tmp]#

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt|sed -n '3p'

908

[root@zhengjincheng tmp]#


操做過程(僅供參考):

[root@zhengjincheng tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[root@zhengjincheng tmp]# sed '3p' a.txt                           忘記加參數-n取消默認輸出

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

i am zjc 1046(88)908 jiayou

[root@zhengjincheng tmp]# sed -n '3p' a.txt         加了參數後恢復正常只輸出匹配的內容

i am zjc 1046(88)908 jiayou

[root@zhengjincheng tmp]# sed -n '3s#^.*88)\(.*)jia.*$#\1#gp' a.txt  轉義符加的不對

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

[root@zhengjincheng tmp]# sed  '3s#^.*88)\(.*) jia.*$#\1#g' a.txt    轉義符加的仍是不對

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

[root@zhengjincheng tmp]# sed  '3s#^.*88)\(.*\) jia.*$#\1#g' a.txt    轉義符正確後正常了

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb                 但發現默認輸出了默認輸出,緣由是沒有加 -n ?

908

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\(.*\) jia.*$#\1#g' a.txt 加了-n 居然沒內容了

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt 還沒找到緣由

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g'a.txt   還沒找到緣由

aaaaaaaaaaaaa                                        

bbbb bbbbbbbbbbbbbb                                                       還沒找到緣由

908

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g'a.txt   還沒找到緣由

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[root@zhengjincheng tmp]# sed   's#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt    還沒找到緣由

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g'a.txt   還沒找到緣由

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[root@zhengjincheng tmp]# sed -n   '3s#^.*88)\([0-9].*\) jia.*$#\1#g'a.txt  仍是以爲是-n

[root@zhengjincheng tmp]#

[root@zhengjincheng tmp]# sed -nr  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt  是沒加-r嗎

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

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt  還沒找到緣由

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt|xargs ls

還沒找到緣由

a.txt p.txt  test.txt

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt|xargs cat 

還沒找到緣由

[root@zhengjincheng tmp]# sed -n  '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt       

還沒找到緣由

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g'a.txt         還沒找到緣由

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt|sed '3p'

再加一個sed

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

908

[root@zhengjincheng tmp]# sed   '3s#^.*88)\([0-9].*\) jia.*$#\1#g' a.txt|sed -n '3p'

取消默認輸出

908

[root@zhengjincheng tmp]# cat a.txt

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

i am zjc 1046(88)908 jiayou

[root@zhengjincheng tmp]#

[root@zhengjincheng tmp]# sed '3s#^.*88)\([0-9].*\)jia.*$#\1#gp' a.txt  哦,原來忘記了加p

aaaaaaaaaaaaa

bbbb bbbbbbbbbbbbbb

908

908

[root@zhengjincheng tmp]# sed -n'3s#^.*88)\([0-9].*\) jia.*$#\1#gp' a.txt 加個-n 就o了

908

[root@zhengjincheng tmp]#

相關文章
相關標籤/搜索