Grep

在 K 的對面,保持內容正確

  • April 12, 2018

perlre的擴展模式頁面上,我們可以閱讀\K

保留剩下的東西\K,不要包含在 $&

這是使用 GNU 的實際範例grep(實際上保留了 GNU 的內容\K):

$ echo "foo bar buzz" | grep -Po "foo \Kbar buzz"
bar buzz

有沒有相反的順序\K

例如僅列印bar,例如:

$ echo "foo bar buzz" | grep -Po "foo \Kbar\X buzz"
bar

在這種情況下,零寬度前瞻可以滿足(?=...)您的要求

$ echo foo bar buzz | grep -Po "foo \Kbar(?= buzz)"
bar

它確實需要一些額外的括號。沒有像\K.

\K到目前為止,實際上只是對所有內容的零寬度回顧,所以這也相當於

echo foo bar buzz | grep -Po "(?<=foo )bar(?= buzz)"

我個人覺得更容易理解。

引用自:https://unix.stackexchange.com/questions/437405