删除与 Linux 中的模式匹配的 lines/contents

remove lines/contents that matches a pattern in Linux

我想从文件中删除注释中的所有行和内容,即“--”。比如我的数据是

---------
--Text1
--Text2
---------
Text3 --Text4
Text5

我的输出应该是

Text3
Text5

我试过 sed '/^--/d' test.txt 并删除了所有以 -- 开头的行,但我想删除 - 之后的所有内容- 以及上面的第 5 行。

使用这个 Perl one-liner:

$ echo 'foo--bar' | perl -pe 's/--.*//' 
foo

Perl one-liner 使用这些命令行标志:
-e :告诉 Perl 查找代码 in-line,而不是在文件中。
-p :一次循环输入一行,默认情况下将其分配给 $_ 。在每次循环迭代后添加 print $_

s/--.*// :替换字面量 -- 后跟任何重复 0 次或多次且没有任何内容的字符(= 删除注释)。

另请参见:
perldoc perlrun: how to execute the Perl interpreter: command line switches
perldoc perlre: Perl regular expressions (regexes)
perldoc perlre: Perl regular expressions (regexes): Quantifiers; Character Classes and other Special Escapes; Assertions; Capture groups