簡體   English   中英

使用 grep 命令在匹配后獲取單詞 [ Linux ]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM