繁体   English   中英

Grep最后一次出现单引号内的子字符串

[英]Grep the substring within the last occurrence of single quotes

我正在尝试在单引号的最后一次出现内的字符串内grep一个子字符串。以下是我的String:

'abc''cde''efg'

下面是我使用的命令;

echo "'abc''cde''efg'" |rev|grep -m1 -oP "(?<=') .*?(?=')"

但是我没有得到想要的输出。 我得到FGE而应该efg

如果反转整个字符串,则提取后还应该反转结果。

但是,根据情况使用PCRE正则表达式(通过P选项启用)可以简化任务:

grep -oP ".*'\K[^']+"

在这里, .*'相匹配到的最后一个(最右边)发生' \\K比赛复位操作将放弃整个匹配的文本和[^']+将投入的结果比其他1个或多个字符'

由于并非所有系统都使用grep提供PCRE功能,因此您也可以考虑使用awk解决方案:

awk -F\'\' 'gsub(/^'"'"'+|'"'"'+$/, "", $0) {print $NF}'

在这里,该字符串被分为带有''子字符串( -F\\'\\' )的字段,然后删除了前导/结尾'gsub(/^'"'"'+|'"'"'+$/, "", $0) ),然后打印最后一个字段( print $NF )。

请参阅在线演示

代码段:

sed -r "s/.*'(\w+)'$/\1/g"
efg

grep -oP ".*'\K[^']+(?=')"
efg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM