版权声明:重在参与,贵在分享 https://blog.csdn.net/wohaqiyi/article/details/83829873
linux命令之筛选文件内容(sed命令)
在linux系统中,可能有这样的需求,比如查看某个文件中含有某些字符的内容。比如,日志文件中,只要含有error
相关的。
可以使用如下命令:
1、根据字符串内容筛选
sed -n "/error/p" logs.log
注意以上/error/p
中的p
必须要带着,后边的logs.log
是一个文件,输入上边的命令,则会打印出只含有error
的内容。
下边用个简单的例子:
比如某个文件中内容如下:
192.168.1.168
xshell
1911919229
Amazing
通过输入如下命令:
sed -n "/192.168/p" file5.sh
最后的结果如下图所示:
操作起来非常方便。
但是请注意:(2018-11-09补充)
但是有这种情况,大家需要注意一下,比如下边的内容:
[root@localhost sed]# cat sed.txt
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
121212221
现在要以如下的规则筛选文本:
sed -n "/1.2/p" sed.txt
执行完之后,会出来下边这样的情况,如下图:
第一次这样用的时候,我懵了半天,后来我才知道,原来这个.
在linux正则里边是任意字符,难怪会出来这样的结果。请大家注意一下,如果你确实想输出192.168.1.2
,那就可以这么写:
sed -n "/1.2$/p" sed.txt
即多加一个结束符号$
。
2、根据行号
还有根据行号筛选如下:
sed -n "2,3p" file5.sh
这样即是返回第 2
到 3
行的数据,如下:
[root@localhost ~]# sed -n "2,3p" file5.sh
xshell
1911919229
其他sed命令用法可以看这个文章