簡體   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