
我正在編寫一個函數,zsh
其中有一個字串
"find . -a -print:10"
該:10
部分需要從右側修剪掉。這可能會在未來發生變化,成為:23
等等:77
,所以似乎:[0-9]+
需要這樣的模式。
此外,該字串可能具有以下形式
find . -a -print
:[0-9]+
在這種情況下,如果末尾沒有模式,則字串應保持不變。
所以
find . -a -print:10
應該成為find . -a -print
和find . -a -print
應該保持為find . -a -print
到目前為止我已經嘗試過的
% sed -nr 's/(.*)(:[0-9]+)?/\1/p' <<<'find . -a -print:10'
find . -a -print:10 # ':10' not getting trimmed
如果我嘗試
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print:10'
find . -a -print # ':10' getting trimmed GOOD ✔✔
但同樣的sed
表達
sed -nr 's/(.*)(:[0-9]+)/\1/p' <<<'find . -a -print'
# no output
我怎麼才能正確修剪這個字串?
答案1
-n
如果您不想抑制預設輸出,為什麼要使用它?
只需使用:
sed -E -e 's/:[0-9]+$//'