perl正则表达式删除特定行

时间:2014-12-13 17:16:48

标签: regex perl

我有CSVish的数据文件

有些参赛作品没有逗号,因为它们是字幕标题。我想删除这些内容。

以下示例数据(借口通用数据)
我想要一个正则表达式/ perl one liner来删除所有字幕行。提前谢谢

Title1  Books,
subtitleA
items,1,2,3,4
days,1,2,3,4
subtitleB
items,1,2,3,4
days,1,2,3,4
Title2  Posters,
subtitleC
items,1,2,3,4
days,1,2,3,4
subtitleD
items,1,2,3,4
days,1,2,3,4

2 个答案:

答案 0 :(得分:3)

使用以下正则表达式匹配所有没有逗号的行。

^[^,\n]+$

^[^,\n]*$

删除匹配的行后。

Perl one-liner。

$ perl -ne 'print unless /^[^,]+$/' file
$ perl -ne 'print unless /^[^,\n]+$/' file
Title1  Books,
items,1,2,3,4
days,1,2,3,4
items,1,2,3,4
days,1,2,3,4
Title2  Posters,
items,1,2,3,4
days,1,2,3,4
items,1,2,3,4
days,1,2,3,4

答案 1 :(得分:3)

使用-i进行就地编辑,

perl -i -ne 'print if /,/' file