[问题] 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