我想返回包含某些字符串的文件名。查看文件来源时,格式为
<Code>5107</Code>
<Active>False</Active>
如何在Linux中搜索上述数据?我将一直在搜索XML文件
我尝试了以下内容(基于对Stack Overflow的搜索)但没有一个正在运行:
find . -iname '*xml' | xargs grep '<Code>5107</Code>
<Active>False</Active>' -sl
find . -iname '*xml' | xargs grep '<Code>5107</Code>^p<Active>False</Active>' -sl
答案 0 :(得分:0)
您可以使用gawk
执行此操作,例如
gawk '/<Code>5107<\/Code>/ { getline ; if ( $0 ~ "<Active>False</Active>" ) { fnames[FILENAME]++ }
END { for ( f in fnames ) { print f } }' *XML
<Code>5107<\/Code>
模式,<Active>False</Active>
,则将FILENAME
存储在数组中FILENAME
匹配(仅一次)答案 1 :(得分:0)
Use this simple command:
1.Find command used to find the all xml files
2.grep -l - print the file name of matched pattern
3.grep "patter1\|pattern2" - searched for multiple pattern
[linux-$]find . -iname "*.xml" -exec grep -l "<Code>5107</Code>\|<Active>False</Active>" {} \;