您可以使用 Vim 或 Nano 等文本编辑器,输入文件并删除所需的行,但是,这种方法不适合使用 bash 脚本进行自动化。
相反,您可以使用强大的 sed 命令行编辑器并删除符合特定条件的行,当然,您可以在 shell 脚本中使用 sed。
从文件中删除第 n 行想象一下,您必须删除文件中的第 7 行号,您可以像这样使用 sed 命令:
sed -i '7d' filename
让我解释一下它是如何工作的:
-i:此选项启用就地编辑,默认情况下,sed 只会显示输出。使用此-i选项,它会修改实际文件而不将其显示在显示器上。7d: 这里 7 是行号,d指示删除行。filename: 这是你要修改的文件,如果文件位于其他目录中,您还可以提供绝对或相对路径。让我用一个真实的例子来展示,这是一个名为 wljslmz.txt 的示例文本文件:
学技术上网络技术联盟站找教程也上网络技术联盟站涨知识还上网络技术联盟站加工资必须上网络技术联盟站
要从此文件中删除第 4 行,我使用:电脑
sed '4d' agatha.txt
这将导致以下显示删除了“也上网络技术联盟站”行:
学技术上网络技术联盟站找教程涨知识还上网电脑络技术联盟站加工资必须上网络技术联盟站
现在,假设您想在 Linux 命令行中删除文件的第一行,像这样使用 sed:
sed -i '1d' filename
使用 sed 删除最后一行“
如果您想在不修改文件本身的情况下查看操作结果,请不要使用-ised 命令的选项。
”
您学会了删除特定行,但如果您需要删除最后一行怎么办?
您可能总是使用 wc 命令获取文件中的总行数,并将此数字与 sed 一起使用。但是,sed 有一种删除文件最后一行的专用方法,您现在不必再担心文件的数量了。
sed -i '$d' filename.txt
删除一系列行
与您之前看到的类似,您也可以从文件中删除一系列行。
假设您必须删除从 11 到 15 的行,您可以提供这样的范围:
sed -i '11,15d' filename
请注意,它还将删除第 11 行和第 15 行,而不仅仅是位于它们之间的行。
删除包含字符串的行您还可以使用 sed 删除包含给定字符串或匹配特定模式的所有行。
下面的命令将删除所有包含单词 'string' 的行:
sed -i '/string/d' filename
请注意,这是一个区分大小写的搜索,您也可以使用正则表达式模式电脑而不是常规字符串。
删除以单词开头的行如果要删除以特定单词或字母开头的所有行,只需提供如下正则表达式模式:
sed -i '/^word/d' 电脑filename
额外提示:删除所有空行
在结束本文之前,让我快速分享一下如何使用 sed 删除所有空行:
sed -i '/^$/d' filename
电脑