gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:31 26 4
gpt4 key购买 nike

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

'abc''cde''efg'

下面是我使用过的命令;

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

但是我没有得到想要的输出。我得到了 fge,而它应该是 efg

最佳答案

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

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

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

此处,.*' 匹配最后一次(最右侧)出现的 '\K match reset operator将丢弃整个匹配文本,并且 [^']+ 将在结果中放入除 ' 之外的 1 个或多个字符。

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

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

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

请参阅online demo .

关于regex - Grep 最后一次出现单引号内的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52037490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com