作者pthread (QQ)
看板Linux
标题[问题] sed指令改写成一行後不能执行
时间Thu Dec 28 15:25:38 2023
原本书上有一个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://webptt.com/cn.aspx?n=bbs/Linux/M.1703748341.A.BD2.html
1F:→ Hsins: d; 12/28 15:33
2F:推 abc0922001: sed '/LIST/{r data11.txt' -e 'd;}' notice.std 12/28 22:03
3F:→ pthread: 还是不行 12/29 11:09
4F:→ pthread: sed: -e expression #1, char 3: unexpected `}' 12/29 11:10
5F:→ Hsins: sed -e '/LIST/{r data11.txt' -e 'd;}' notice.std 12/29 12:12
6F:→ Hsins: 因为 r 会把後面所有的内容当成文件名称,以单引号或换行 12/29 12:13
7F:→ Hsins: 为依据。这表示 data11.txt;d} 被当作文件名称,所以左侧的 12/29 12:14
8F:→ Hsins: { 吃不到右侧的 } 被认为没有闭合,二楼的解法是对的,只是 12/29 12:15
9F:→ Hsins: 漏掉了一个 -e 让他不知道前面被单引号包住的也是表达式 12/29 12:15
10F:推 Gold740716: sed 这真的不是设计错误吗…… 12/29 23:00
11F:推 brli7848: 首先 楼上要先确定你是在讲gnu sex还是bsd sed毕竟 开 12/30 01:30
12F:→ brli7848: 发团队/程式原始码完全不同 12/30 01:30
13F:→ brli7848: *sed 12/30 01:31
14F:推 if4: 请问会避不掉单行的情况吗?否则就不要用单行啊XD 12/31 03:00
15F:推 OSDBNetwork: sed -e '/LIST/r data11.txt' -e '/LIST/d' notice.s 12/31 23:42
16F:→ OSDBNetwork: td 12/31 23:43
17F:推 allmwh: sed '/LIST/{r data11.txt 01/25 00:11
18F:→ allmwh: d;}' notice.std 01/25 00:11