linux命令之筛选文件内容

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

  最后的结果如下图所示:

linux命令之筛选文件内容_第1张图片
操作起来非常方便。

但是请注意:(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命令之筛选文件内容_第2张图片
  第一次这样用的时候,我懵了半天,后来我才知道,原来这个. 在linux正则里边是任意字符,难怪会出来这样的结果。请大家注意一下,如果你确实想输出192.168.1.2 ,那就可以这么写:

sed -n "/1.2$/p" sed.txt

   即多加一个结束符号$

2、根据行号

  还有根据行号筛选如下:

 sed -n "2,3p" file5.sh

  这样即是返回第 23 行的数据,如下:

[root@localhost ~]# sed -n "2,3p" file5.sh
xshell
1911919229

其他sed命令用法可以看这个文章

sed命令用法

你可能感兴趣的:(linux)