骚操作,如何使用 sed 命令从文本文件中删除特定行?

举报
wljslmz 发表于 2022/07/27 23:11:46 2022/07/27
【摘要】 您可以使用 Vim 或 Nano 等文本编辑器,输入文件并删除所需的行,但是,这种方法不适合使用 bash 脚本进行自动化。 相反,您可以使用强大的 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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。