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