Awk 带有两个搜索条件的grep命令
`我的文件内容如下Awk 带有两个搜索条件的grep命令,awk,grep,Awk,Grep,`我的文件内容如下 <path action="A" kind="file">/Demo/svn_dev/src/classes/Util - Copy.cls</path><path action="D" kind="file">/Demo/svn_dev/src/classes/Admin.cls</path> <path action="M" kind="file">/Demo/svn_dev/src/classes/AdminU
<path
action="A"
kind="file">/Demo/svn_dev/src/classes/Util - Copy.cls</path><path
action="D"
kind="file">/Demo/svn_dev/src/classes/Admin.cls</path>
<path action="M"
kind="file">/Demo/svn_dev/src/classes/AdminUtilCtrl.cls</path>
</paths>
<msg>xyz</msg>
/Demo/svn_dev/src/classes/Util-Copy.cls/Demo/svn_dev/src/classes/Admin.cls
/Demo/svn_dev/src/classes/adminiutilctrl.cls
xyz
如果消息包含字符串“xyz”和action=“D”,我需要检索文件的路径
在这里,我需要输出为/Demo/svn_dev/src/classes/Admin.cls
有谁能帮我学习grep命令语法吗。如果你需要进一步的信息,请告诉我。
谢谢你的帮助你不能用grep做那份工作。这里有一种方法可以使用GNU awk实现多字符RS,第三个参数用于match()
$cat tst.awk
开始{RS=“\\s*]+>\\s*”}
匹配($0,/^]+>(.*)/,a){act=a[1]}
/^xyz$/{print act}
$awk-f tst.awk文件
/Demo/svn_dev/src/classes/Admin.cls
使用grep
可以在第一种模式存在的情况下提取第二种模式,需要在工作结束后稍微提取信息
$ grep -q '<msg>xyz</msg>' file && grep -A1 'action="D"' file |
sed -n -r '$s/[^>]*>(.*)<.*/\1/p'
/Demo/svn_dev/src/classes/Admin.cls
$grep-q'xyz'文件&&grep-A1'action=“D”文件
sed-n-r'$s/[^>]*>(*)介意在这里展示一些努力吗?
$ grep -q '<msg>xyz</msg>' file && grep -A1 'action="D"' file |
sed -n -r '$s/[^>]*>(.*)<.*/\1/p'
/Demo/svn_dev/src/classes/Admin.cls