删除与 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
我想从文件中删除注释中的所有行和内容,即“--”。比如我的数据是
---------
--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