Bash 如何在一个文件中写入多个sed命令?
我想使用sed命令Bash 如何在一个文件中写入多个sed命令?,bash,sed,Bash,Sed,我想使用sed命令/^$d删除文件中的空行,然后在文件末尾添加一行。因此,当我尝试在命令文件中执行此操作时 /^$/d \ $ a \ My color is blue 然后执行我得到的错误是:在第一行的命令之后有额外的字符。我了解到您在结束一行命令时使用“\”为什么将其作为额外字符读取???您的错误是第一行末尾的continuation\字符 您需要在第二行(对于a命令)使用它来为a命令添加一些内容,但第一个命令在看到行的末尾时就完成了。继续这一行,您会混淆sed,因为它认为命令是同时运行的
/^$d
删除文件中的空行,然后在文件末尾添加一行。因此,当我尝试在命令文件中执行此操作时
/^$/d \
$ a \
My color is blue
然后执行我得到的错误是:在第一行的命令之后有额外的字符。我了解到您在结束一行命令时使用“\”为什么将其作为额外字符读取???您的错误是第一行末尾的continuation\字符 您需要在第二行(对于
a
命令)使用它来为a
命令添加一些内容,但第一个命令在看到行的末尾时就完成了。继续这一行,您会混淆sed,因为它认为命令是同时运行的。补充有用的答案:
- 将完整的
命令放在单独的行上总是可以的sed
- 相反,如果换行符是单个命令的一部分(如本例中的
函数调用),则必须a
-对其进行转义\
- 如果您愿意尝试,这里有一个
awk
解决方案:
awk 'NF; END {print "new line"}' file
NF
仅当行中有一些字段(即有数据)时才为真。END{print“new line”}
这会在文件末尾添加一行。不要继续第一行。\
仅在模式(s//
,/,/
)中用作新行分隔符,或追加、插入(a\
,i\
[无尾随空格])及其后面的行