sed或awk - 如果找不到表达式,则从文件中删除行

时间:2013-01-30 15:05:27

标签: regex perl sed awk

我有一个包含多个条目的文件。条目分开      - 如果在其中找不到某个短语,我想删除此模式之间的所有行。 例如:

--
Company
Street 
Zip Code
Country
--

如果在 - 和 - 之间找不到国家/地区,则删除完整的块

提前致谢:)

2 个答案:

答案 0 :(得分:1)

你可以这样做:

awk '!/Country/' RS='--\n' ORS='--\n'

答案 1 :(得分:1)

也许以下内容会有所帮助:

use strict;
use warnings;

local $/ = '--';
print $/;

while (<>) {
    print if /\bCountry\b/;
}

用法:perl script.pl dataFile [>outputFile]

数据:

--
Company
Street 
Zip Code
Elephant
--
Company
Street 
Zip Code
Country
--
Company
Street 
Zip Code
Goat
--
Company
Street 
Zip Code
Country
--

输出:

--
Company
Street 
Zip Code
Country
--
Company
Street 
Zip Code
Country
--