[問題] sed指令改寫成一行後不能執行

作者: pthread (QQ)   2023-12-28 15:25:38
原本書上有一個sed指令是這樣的
sed '/LIST/{
r data11.txt
d
}' notice.std
改寫成一行之後就不能執行了
sed '/LIST/{r data11.txt;d}' notice.std
錯誤訊息:
sed: -e expression #1, char 0: unmatched `{'
請問要怎麼改才可以正確執行,謝謝
作者: Hsins (翔)   2023-12-28 15:33:00
d;
作者: abc0922001 (中士abc)   2023-12-28 22:03:00
sed '/LIST/{r data11.txt' -e 'd;}' notice.std
作者: pthread (QQ)   2023-12-29 11:09:00
還是不行sed: -e expression #1, char 3: unexpected `}'
作者: Hsins (翔)   2023-12-29 12:12:00
sed -e '/LIST/{r data11.txt' -e 'd;}' notice.std因為 r 會把後面所有的內容當成文件名稱,以單引號或換行為依據。這表示 data11.txt;d} 被當作文件名稱,所以左側的{ 吃不到右側的 } 被認為沒有閉合,二樓的解法是對的,只是漏掉了一個 -e 讓他不知道前面被單引號包住的也是表達式
作者: Gold740716 (項為之強)   2023-12-29 23:00:00
sed 這真的不是設計錯誤嗎……
作者: brli7848 (無理阿?)   2023-12-30 01:30:00
首先 樓上要先確定你是在講gnu sex還是bsd sed畢竟 開發團隊/程式原始碼完全不同*sed
作者: if4 (if)   2023-12-31 03:00:00
請問會避不掉單行的情況嗎?否則就不要用單行啊XD
作者: OSDBNetwork (路人甲)   2023-12-31 23:42:00
sed -e '/LIST/r data11.txt' -e '/LIST/d' notice.std
作者: allmwh (寧子阿斯阿斯)   2022-01-25 00:11:00
sed '/LIST/{r data11.txtd;}' notice.std

Links booklink

Contact Us: admin [ a t ] ucptt.com