Linux
如果搜尋失敗,使用 sed 執行 shell 腳本
我在做
sed "s/test1/replacetext" testfile.txt
我正在嘗試使用 /q 來查找“test1”並執行 shell 腳本。我怎樣才能做到這一點?謝謝內特
使用 GNU
sed
和多行輸入:sed -n '/pattern/{h;s//replacement/;};p;${g;//!q1;}' file
在包含以下內容的行上
pattern
:
- 將行添加到保持緩衝區
- 執行替換
列印每一行
當到達最後一行 (
$
) 時:
- 獲取保持緩衝區
- 如果模式空間不包含
pattern
,則退出並退出程式碼1
空正則表達式
//
使用最後使用的正則表達式模式替代方案 -
awk
:awk 'END{exit !repl} /pattern/{repl++; sub(/pattern/,"replacement")} 1' file
- 如果一行包含
pattern
,則變數repl
遞增並進行替換- 最後,退出
logical not
變數的(如果repl
為零,退出狀態1
)替代方案 -
grep
預先輸入,例如:if grep -q 'pattern' file; then # input contains pattern - do sed replacement sed 's/pattern/replacement/' file else : input does not contain pattern - execute shell script fi