【发布时间】:2013-11-18 09:56:34
【问题描述】:
我有两个关于“awk”的问题。在 bash 脚本中,我想在两个模式之间从文件中提取与单词“found”匹配的行。我用这个:
awk '/$Pattern START/ {p=1} p && /found/ {print "line_"NR": "$0}; /$Pattern OK/ {p=0}' file2.txt
问题:
1. The variable Pattren is not expanded in the syntax presented
2. I want to specify with "or" multiple end patterns something like this:
awk '/$Pattern START/ {p=1} p && /found/ {print "line_"NR": "$0}; /$Pattern {OK,NOT}/ {p=0}' file2.txt
谢谢。
【问题讨论】:
-
变量不会在单引号内展开。
-
所以你使用的是我在stackoverflow.com/a/19999013/1983854中建议的awk命令
-
这样工作:awk '/'$Pattern' START/ {p=1} p && /found/ {print "line_"NR": "$0}; /'$Pattern' OK/ {p=0}' file2.txt
-
为什么
awk不是grep? -
我使用 awk 因为我想获取行号。