[英]grep first instance of a pattern with a wildcard
我正在尝试使用 grep 命令来查找其中带有通配符的模式的第一个实例。 例如,如果我们在文件“inputFile.txt”中有以下行,其中包含相当多的随机内容:
[random 1]=[3], iwfl +34234, [target]=[value], well[], random[]][value
所需的 Output:
[target]=[value]
甚至比想要的 Output 还要好:
value
我已经尝试过的:
cat inputFile.txt | grep -m 1 "[target].*]"
我希望通配符只与它检测到的“]”的第一个实例匹配。 但是,这一直不起作用,并在文件中的 [target] 和最后一个“]”之间进行选择。
任何帮助,将不胜感激。
您可以将此grep
与-o
选项一起使用:
grep -o "\[target]=\[[^]]*]" file
[target]=[value]
解释:
\[target]=
: 匹配文本[target]=
\[
: 比赛开场[
[^]]*
: 匹配 0 个或多个不是]
的字符]
: 比赛结束]
如果您只想要value
部分,请使用此sed
:
sed -E 's/^.*\[target]=\[([^]]*)].*/\1/' file
value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.