首页 > 代码库 > 有关linux三剑客之sed的一道练习题
有关linux三剑客之sed的一道练习题
1.1 取出a.txt中的908这三个数字:
实例:
[root@zhengjincheng tmp]# cat a.txt
aaaaaaaaaaaaa
bbbb bbbbbbbbbbbbbb
i am zjc 1046(88)908 jiayou
[root@zhengjincheng tmp]#
结果是:
[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#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]#
本文出自 “jinchengzheng@boke” 博客,请务必保留此出处http://jinchengzheng.blog.51cto.com/10798482/1843245
有关linux三剑客之sed的一道练习题