删除行从文件使用linux命令/脚本有多个条件删除一个单一的行

wbgh16ku  于 2023-06-29  发布在  Linux
关注(0)|答案(1)|浏览(115)

我想从文件中删除以下以#开头的行,并具有Apache/apache。请找到下面的文件内容,我想操纵和删除:

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

axzmvihb1#

您可以使用Regex和sed来实现这一点。
这应该可以做到:

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

分解为:

  • -i:读取文件,进行更改并将结果写回文件
  • ^#:以#开头的行
  • .*:中间的任意字符数
  • [Aa]:匹配大小写A/a
  • pache:匹配单词的其余部分
  • / d:删除所有匹配的行
  • filename:要就地编辑的文件

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

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

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

相关问题