使用linux命令/脚本从文件中删除行具有多个条件以删除一行

时间:2018-06-28 10:00:45

标签: linux shell sed

嗨,我想从文件中删除以下行,并以#开头,并使用Apache / apache。请在下面找到我要操作和删除的文件内容:

----------------------------------------------------------
# Apache configuration
# This is apache configuration
This is not Apache configuration
----------------------------------------------------------

请建议...

1 个答案:

答案 0 :(得分:-1)

您可以使用Regex和sed执行此操作。

这应该做到:

sed -i '/^#.*[Aa]pache/ d' <filename>

细分为:

  • -i:读取文件,进行更改并将结果写回到文件中
  • ^#:以#
  • 开头的行
  • 。*:介于两者之间的任意数量的字符
  • [Aa]:同时匹配大小写A / a
  • pache:匹配其余单词
  • / d:删除所有匹配的行
  • 文件名:要就地编辑的文件

如果您需要输出到stdout,也可以这样做:

cat <filename> | sed '/^#.*[Aa]pache/ d' 

我建议学习使用正则表达式: https://regexone.com/