手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

linux中如何删除文件中的指定行

时间:2024-10-18 17:21:13

linux服务器上,很多软件都是使用配置文件来更新配置的,有时候需要去掉文件中的指定行,下面我们来看下,怎么删除文件中的指定行。

工具/原料

sed工具

一、正则表达式删除

1、指定的行可以分为两类,分别是:1. 符合指定条件的行2. 指定行号的行我们先来看符合指定条件的行。在linux服务器管理过程中,很多配置文件里的注释非常长,如下面图中所示,是一个postgresql的配置文件,配置只有两行,但是注释可能有10几行。这种情况比较常见。

linux中如何删除文件中的指定行

2、因此就需要通过正则表达式来去掉里面依宏氽墓指定的注释行或者空行。上面的postgresql图片示例中注释太多,不太好看清嚎猎鬟沆楚,我们这里使用一个nginx的配置文件,如下面第一张,前面有3行#号开头的注释,后面有若干行配置文件。在正则表达式里,^符号表示开头,$符号表示结尾。因此空白的行就可以表示为"^$",即一个开头,一个结尾,中间没有任何符号,如下面第二张图中所示,通过grep命令来查找,-v选项表示排除符合条件的选项。即找出所有非空行。可以看到,结果中显示了所有的注释行和配置行,空白行被删除了。

linux中如何删除文件中的指定行
linux中如何删除文件中的指定行

3、以#号开头的行,按照上面说到的规则,就可以表示为"^#",如下面图中所示,通过grep 命令的-v选项,排除掉以#号开头的行,就会显示出所有的配置行和空白行,#号开头的注释行被删除了。

linux中如何删除文件中的指定行

4、将排除空白行和排除注释行的代码结合到一起,最后输出的就是所有的配置行。使用重定囿鹣分胰向命令>>将所有的结果输出到一个新的ngi荏鱿胫协nx.conf文件中,就相当于删除掉了需要排除的行。如下面图中所示。如果你还想删除其他行,使用同样的原理,找到对应行的字符串规则,然后使用匹配的正则表达式,用grep命令的-v选项排除掉这些行即可。

linux中如何删除文件中的指定行

二、通过sed命令编辑对应的文件

1、我们使用cp命令重新复制一份新的nginx.conf配置文件到当前目录下。刚才说到的是,使用正则表达式删除掉匹配的行。现在我们来说一下,如何删除掉指定行号的行,如下面图中所示,这个nginx.conf配置文件中第1-3行是注释文件。

linux中如何删除文件中的指定行

2、现在我想删除掉对应的行,我们来看一下sed命令是如何操作的,如下面图中所示。sed命令的应用方式是:sed '1d' nginx.conf这个命令表示删除掉这个配置文件中的第1行,1表示行号,d表示删除。最终的输出结果中我们看到只有2行注释了。

linux中如何删除文件中的指定行

3、但是sed命令默认情况下,不会修改原来的配置文件,只会将修改后的结果输出。如下面图中所示,我们打开nginx.conf配置文件,可以看到还是有3行注释。这是为了避免用户修改源文件,导致配置出错。我们这里删除的是注释行,没有任何问题。但是当你删除的是配置行的时候,可能就会导致软件运行出错了。因此可以将修改后的结果重定向到新的文件,然后将原来的配置文件备份以后,用新的配置文件替换。这样即使出错,也可以用备份的文件恢复,更安全。

linux中如何删除文件中的指定行

4、那你肯定会问了,有没有直接修改源文件的方法?当然有,但是这个操作非常危险,建议不要在生产环境上直接操作。如下面图中所示,直接在sed命令后面加上-i选项即可。这样sed命令就会直接修改源文件。执行结果不会有任何输出,

linux中如何删除文件中的指定行

5、执行完毕后我们用vim编辑器打开nginx.conf文件,如下面图中所示,可以看到第1-3行已经消失,配置文件就被改变了。因此,在修改系统配置文件或者重要的软件配置文件时,这个命令一定要非常小心地使用。尽量先备份配置文件。

linux中如何删除文件中的指定行
© 手抄报圈