如何在文件中写入多个 sed 命令?
How to write multiple sed commands in a file?
我想使用 sed 命令从文件中删除空白行 /^$d
然后我想在文件末尾添加一行。所以当我尝试在我的命令文件中这样做时
/^$/d \
$ a \
My color is blue
然后执行我得到错误提示:第一行命令后的额外字符。我读过你在结束一行命令时使用 '\' 为什么它读取它作为额外字符???
您的错误是第一行末尾的 \ 字符。
您需要在第二行(对于 a
命令)为 a
命令添加一些内容,但第一个命令在行尾时已完成见过。通过继续该行,您会混淆 sed
,因为它认为命令 运行 在一起。
补充 有用的答案:
- 总是可以将完整
sed
命令放在不同的行上。
- 反之,如果换行符是单个命令的部分(例如本例中的
a
函数调用case),你必须\
-转义它。
如果您想尝试,这里有一个 awk
解决方案:
awk 'NF; END {print "new line"}' file
NF
只有当行上有一些字段时才为真,即有数据。
END {print "new line"}
这会在文件末尾添加一行。
我想使用 sed 命令从文件中删除空白行 /^$d
然后我想在文件末尾添加一行。所以当我尝试在我的命令文件中这样做时
/^$/d \
$ a \
My color is blue
然后执行我得到错误提示:第一行命令后的额外字符。我读过你在结束一行命令时使用 '\' 为什么它读取它作为额外字符???
您的错误是第一行末尾的 \ 字符。
您需要在第二行(对于 a
命令)为 a
命令添加一些内容,但第一个命令在行尾时已完成见过。通过继续该行,您会混淆 sed
,因为它认为命令 运行 在一起。
补充
- 总是可以将完整
sed
命令放在不同的行上。 - 反之,如果换行符是单个命令的部分(例如本例中的
a
函数调用case),你必须\
-转义它。
如果您想尝试,这里有一个 awk
解决方案:
awk 'NF; END {print "new line"}' file
NF
只有当行上有一些字段时才为真,即有数据。
END {print "new line"}
这会在文件末尾添加一行。