看板 Linux 關於我們 聯絡資訊
原本書上有一個sed指令是這樣的 sed '/LIST/{ r data11.txt d }' notice.std 改寫成一行之後就不能執行了 sed '/LIST/{r data11.txt;d}' notice.std 錯誤訊息: sed: -e expression #1, char 0: unmatched `{' 請問要怎麼改才可以正確執行,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.187.32 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1703748341.A.BD2.html
Hsins: d; 12/28 15:33
abc0922001: sed '/LIST/{r data11.txt' -e 'd;}' notice.std 12/28 22:03
pthread: 還是不行 12/29 11:09
pthread: sed: -e expression #1, char 3: unexpected `}' 12/29 11:10
Hsins: sed -e '/LIST/{r data11.txt' -e 'd;}' notice.std 12/29 12:12
Hsins: 因為 r 會把後面所有的內容當成文件名稱,以單引號或換行 12/29 12:13
Hsins: 為依據。這表示 data11.txt;d} 被當作文件名稱,所以左側的 12/29 12:14
Hsins: { 吃不到右側的 } 被認為沒有閉合,二樓的解法是對的,只是 12/29 12:15
Hsins: 漏掉了一個 -e 讓他不知道前面被單引號包住的也是表達式 12/29 12:15
Gold740716: sed 這真的不是設計錯誤嗎…… 12/29 23:00
brli7848: 首先 樓上要先確定你是在講gnu sex還是bsd sed畢竟 開 12/30 01:30
brli7848: 發團隊/程式原始碼完全不同 12/30 01:30
brli7848: *sed 12/30 01:31
if4: 請問會避不掉單行的情況嗎?否則就不要用單行啊XD 12/31 03:00
OSDBNetwork: sed -e '/LIST/r data11.txt' -e '/LIST/d' notice.s 12/31 23:42
OSDBNetwork: td 12/31 23:43
allmwh: sed '/LIST/{r data11.txt 01/25 00:11
allmwh: d;}' notice.std 01/25 00:11