Sed

沒有使用 sed 獲得惰性評估

  • May 20, 2022

我本來期望’a’為此,為什麼’a:b’?

$ echo "a:b:c" | sed -E 's/(.+?):.+/\1/'
a:b

大多數版本sed不支持 perl 風格的正則表達式(我知道的唯一一個是“super sed”,ssed,自 2005 年以來一直沒有更新),並且不支持?non-greedy 修飾符。

如果您想使用該精確的正則表達式,最簡單的解決方案是使用perl

$ echo "a:b:c" | perl -pe 's/(.+?):.+/$1/'
a

否則,修改正則表達式,使擷取匹配冒號以外的任何字元:

$ echo "a:b:c" | sed -E 's/([^:]+):.+/\1/'
a

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