[英]use grep command to get a word after a match [ Linux ]
我有這個命令grep -oP '.*?(?=\:)'
之前獲取單詞:字符,我想要的是獲取所有單詞之后:字符 我該怎么做?
您可以使用\K
,它告訴引擎假裝匹配嘗試從這個 position 開始。 你可以有類似的東西:
grep -oP '.*:\K(.*)'
例子:
$ echo "hello:world" | grep -oP ":\K.*"
world
如果你需要在最后一個:
之后得到一個單詞,你需要
grep -oP '.*:\K\w+' file
如果你需要在第一個:
之后得到一個詞,你需要
grep -oP '^[^:]*:\K\w+'
如果您需要獲取:
之后的所有單詞,則需要
grep -oP ':\K\w+'
如果“單詞”是一系列非空白字符,則需要將\w
替換為\S
:
grep -oP '.*:\K\S+' file
grep -oP '^[^:]*:\K\S+'
如果“單詞”是任何 Unicode 字母的序列,則需要將\w
替換為\p{L}
:
grep -oP '.*:\K\p{L}+' file
grep -oP '^[^:]*:\K\p{L}+'
注意事項:
\K
是一個匹配重置運算符,用於清除當前的整體匹配 memory 緩沖區。-o
- 輸出匹配的子字符串的選項,不匹配的行-P
- 啟用 PCRE 正則表達式引擎,而不是默認的 POSIX 引擎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.