我有一个文件,它可能有多个字符串模式的实例(从X开始,以Y结尾)。我想提取与此模式匹配的每个实例。这些可能位于单行或新行,可能位于或不位于行的开始或结束。我尝试使用grep的正则表达式模式为(X*Y),但运行ksh的KornShell (ksh)版本不承认-c选项,因此很难提取所需的内容。我也读过awk可以做到这一点,但找不到好的文档为awk。
任何帮助都会很高兴的。
发布于 2013-12-03 13:46:50
如果模式包含在一行上,而每行只包含一个实例,则可以尝试
awk -f ext.awk file其中file是您的输入文件,ext.awk是
BEGIN {
pat="X.*Y"
}
$0 ~ pat {
match ($0,"(" pat ")",a)
print a[1]
}更新
如果可以在一行上找到多个模式,或者模式扩展到多行,则可以用以下方式替换ext.awk:
{
line=line $0 RS
}
END {
while(match(line,/(X[^Y]*Y)/,a)) {
print a[1]
line=substr(line,RSTART+RLENGTH)
}
}https://stackoverflow.com/questions/20340966
复制相似问题