有关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的一道练习题的主要内容,如果未能解决你的问题,请参考以下文章