比赛前后的 Grep

比赛前后的 Grep

我想 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 重置比赛的开始(什么是Kept)作为使用后视断言的更短替代方案:
珀尔蒙克斯环顾四周正则表达式中对 \K 的支持
[^"]+ 任何字符,除了"(1 次或多次(匹配尽可能多的数量))

答案2

您可以通过以下方式 grep 出每行上第一个带引号的子字符串:

grep -oP '^([^"]+)"\K[^"]+' input_file

相关内容