我想 grep 从“系统路径”之后到“type =”之前的所有内容。 grep“系统路径”打印“系统路径”之后的所有内容
只想从行 grep - system path="file/aww/ld/lslmux
<system path="file/aww/ld/lslmux" type="FILE" reason="filelist" action="NEW" status="COMPLETED"
<system path="file/aww/ld/lslmux/systemfile.xml" type="FILE" reason="filelist" action="NEW" status="COMPLETED"
<system path="file/aww/ld/lslmux/systemfiletest.page" type="FILE" reason="filelist" action="NEW" status="COMPLETED"
答案1
使用 GNU grep
:
$ grep -oP '<system path="\K[^"]+' file
file/aww/ld/lslmux
file/aww/ld/lslmux/systemfile.xml
file/aww/ld/lslmux/systemfiletest.page
和Perl
:
$ perl -nE 'say for /<system path="\K([^"]+)/g' file
正则表达式匹配如下:
节点 | 解释 |
---|---|
\K |
重置比赛的开始(什么是K ept)作为使用后视断言的更短替代方案:珀尔蒙克斯环顾四周和正则表达式中对 \K 的支持 |
[^"]+ |
任何字符,除了" (1 次或多次(匹配尽可能多的数量)) |
答案2
您可以通过以下方式 grep 出每行上第一个带引号的子字符串:
grep -oP '^([^"]+)"\K[^"]+' input_file