我正在尝试在给定文件中搜索和打印(仅)包含某些标识符的部分。这些部分由开始和结束标记分隔,并延伸多行。该任务需要由 unix 命令完成。
例如,对于以下行:
start:
blah..blah
666
blah blah..
end:
start:
blah..blah
1234
blah blah..
end:
start:
blah..blah
8020
blah blah..
end:
我想打印以"开始"分层并以"结束"结尾的部分,例如标识符 1234:
start:
blah..blah
1234
blah blah..
end:
欢迎您的帮助。
这可能对你有用(GNU sed):
sed -n '/start:/{:a;N;/end:/!ba;/1234/p}' file
收集start:
和end:
之间的行,如果集合还包含1234
,则打印它们。
perl 中的触发器:
perl -ne '
if ( $range = ( m/Astart:/ .. m/Aend:/ ) ) {
$s .= $_;
if ( $range =~ /E0Z/ ) {
if ( $s =~ m/(?m)^s*1234s*$/ ) {
print $s;
}
undef $s;
}
}
' infile
它产生:
start:
blah..blah
1234
blah blah..
end: