我正在努力弄清楚如何编写sed
脚本;特别是标签和分支。
例如,我想删除文本文件中的所有换行符(\n
)。如果我在命令行上这样做
sed -e ':a;N;$!ba;/s/\n/ /g' testfile.txt
完全符合我的期望;删除所有换行符。
如果我将命令放入脚本文件(scrub.sed)中,问题就出现了:
:a
N
$!b a
s|\n| |g
并使用
执行它sed -f scrub.sed testfile.txt
我收到以下错误:
sed: 3: scrub.sed: whitespace after branch
sed: 5: scrub.sed: undefined label 'a '
我正在尝试遵循here
所述的语法:top
command1
command2
/pattern/b top
command3
我在FreeBSD中使用nano编辑文件,我在分支后找不到任何“空格”。我做错了什么?
答案 0 :(得分:0)
问题是nano
,我用来创建文件的编辑器。
当我在vi
中重新创建文件时,问题就消失了;脚本运行没有问题。
在nano
中,我启用了空格的显示( Meta P )并获得以下内容:
:a
N.
$!ba.
s|\n|.|g
(期间是空白的地方)
一旦我删除了空格,就可以了。我试图创建另一个文件,小心不要在行之间添加任何空格,但出于某种原因,nano
添加了它们。我不知道为什么nano
表现出这种行为,但至少有一个向前迈进的答案。