【发布时间】:2016-02-09 05:34:30
【问题描述】:
我有 awk 脚本,它将从 input1.txt 读取 SEARCH 关键字,它会搜索该 SEARCH 字符串
存在于input2.xml
$ cat myAwk.awk
NR==FNR {
keywordArray[NR]=$0;
next;
}
/<record / { i=1 }
i { a[i++]=$0 }
/<\/record>/ {
if (found) {
for (i=1; i<=length(a); ++i) print a[i] >> result.txt
}
i=0;
found=0
}
/<keyword>KEYWORD1<\/keyword>/ { found=1 }
/<keyword>KEYWORD2<\/keyword>/ { found=1 }
.....
这是我需要帮助的地方。我需要传递存储在keywordArray中的KEYWORD值。
$ cat input1.txt
KEYWORD1
KEYWORD2
KEYWORD3
...
$ cat input2.xml
<record category="xyz">
<person ssn="" e-i="E">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/>
<last_name></last_name>
<aliases>
<alias>CDP</alias>
</aliases>
<keywords>
<keyword xsi:nil="true"/>
<keyword>KEYWORD1</keyword>
</keywords>
<external_sources>
<uri>http://www.google.com</uri>
<detail>KEYWORD1 is present in abc for xyz reason</detail>
</external_sources>
</details>
</record>
<record category="abc">
<person ssn="" e-i="F">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/>
<last_name></last_name>
<aliases>
<alias>CDP</alias>
</aliases>
<keywords>
<keyword xsi:nil="true"/>
<keyword>DONTSEARCH</keyword>
</keywords>
<external_sources>
<uri>http://www.google.com</uri>
<detail>SEARCH is not present in abc for xyz reason</detail>
</external_sources>
</details>
</record>
$ awk -f myAwk.awk input1.txt input2.xml
【问题讨论】:
-
您的预期输出是什么?
-
预期输出是从
<record>到</record>的整个记录内容应写入result.txt。只有<keyword>标签值与KEYWORDS匹配的记录