我正在嘗試調整來自https://stackoverflow.com/a/66365284/1236401的答案,該答案添加了控制流以提供匹配狀態代碼:
cat file.txt | sed 's/1/replaced-it/;tx;q1;:x'
它在 Ubuntu 和 Alpine 上按預期作業,但在 Mac OSX ( 11.6)上失敗,使用任何 shell。
sed: 1: "s/1/replaced-it/;tx;q1;:x": 未定義標簽 'x;q1;:x'
我能找到的所有sed在 OSX上行為不端的參考都是針對就地檔案編輯的,這里不是這種情況。
uj5u.com熱心網友回復:
sed 中的命令主要由換行符分隔。
| sed 's/1/replaced-it/
tx
q1
:x
'
或者:
sed -e 's/1/replaced-it/' -e 'tx' -e 'q1' -e ':x'
此外,它q1是一個 GNU sed 擴展——并非每個sed. 它必須被移除、重構,或者你必須安裝 GNU sed。
總的來說,用awk、python或perl撰寫。
uj5u.com熱心網友回復:
這是一個 awk 重構。
awk '/1/ { sub("1", "replaced-it", $0); replaced=1 } 1
END { exit 1-replaced }' file.txt
通知還如何將cat是無用的(與sed太,和通常任何標準的Unix命令除外煩人tr)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364875.html
下一篇:IonicCordovaAndroid:找不到可用的Android構建工具。30.x安裝的最高版本是30.0.2;所需的最低版本為30.0.3
