我正在嘗試編寫一個簡短腳本,其中我使用sed來搜索流,然後基於shell函數的結果執行對流的替換,該函數需要參數來自sed,例如在sed腳本中使用命令替換,使用參數
#!/bin/sh
function test {
echo "running test"
echo $1
}
sed -n -e "s/.*\(00\).*/$(test)/p" < testfile.txt
其中TESTFILE.TXT包含:
1234
2345
3006
4567
(每間換行;他們越來越貴網站格式化刪除)。所以,確定該腳本適用於我(輸出「運行測試」),但顯然沒有傳遞給測試的參數。我想sed的行是這樣的:
sed -n -e "s/.*\(00\).*/$(test \1)/p" < testfile.txt
和輸出:
running test
00
使得由sed的匹配的模式被饋送作爲參數進行測試。我並沒有真正期望上面的工作,但我已經嘗試了每個組合的$()方括號,反引號和我能想到的轉義,並且在任何地方都找不到這種情況。幫幫我?
如果您使用的是GNU sed,請閱讀e命令;)http://www.gnu.org/software/sed/manual/sed.html#Extended-Commands – 2013-02-28 15:27:39