Juli TR Asked: 2019-07-22 21:44:59 +0800 CST2019-07-22 21:44:59 +0800 CST 2019-07-22 21:44:59 +0800 CST sed '5i\n\n\n' myfile 首先插入 \n 作为文字 n,另外两个 \n\n 作为新行,是否可以插入所有 3 个新行?[复制] 772 我正在编写一个 Bash 脚本,当使用 GNU sed 向文件插入行时,第一行作为文字 n 插入,而其余的作为新行插入。命令是这样的: sed '5i\n\n\n' myfile 输出是这样的: n 如所见,输出中的第一行包含一个“n”,它应该是无的,我对这种行为缺少什么?是否可以让 sed 只插入带有 '\n' 的新行?谢谢你。 sed gnu 1 个回答 Voted Best Answer Michael Homer 2019-07-22T21:53:56+08:002019-07-22T21:53:56+08:00 标准sed插入是_ 5i\ text here... (包括反斜杠)。GNU sed 有一个扩展,它接受与命令在同一行的文本i,但是如果在它之后有一个反斜杠,i它会像往常一样被解释为结束命令——尽管它仍然不会强迫你移动到新的一行。您可以使用 5i\\n\n\n 一起做。这不是转义的反斜杠,而是两种不同类型的反斜杠紧挨着。这种行为似乎没有记录,但在命令和版本之间是一致的。 您可能会发现使用另一个 GNU 扩展更清晰: sed -e '5i\' -e '\n\n\n' 将命令和文本拆分为两个-e参数以避免这种歧义。
标准
sed
插入是_(包括反斜杠)。GNU sed 有一个扩展,它接受与命令在同一行的文本
i
,但是如果在它之后有一个反斜杠,i
它会像往常一样被解释为结束命令——尽管它仍然不会强迫你移动到新的一行。您可以使用一起做。这不是转义的反斜杠,而是两种不同类型的反斜杠紧挨着。这种行为似乎没有记录,但在命令和版本之间是一致的。
您可能会发现使用另一个 GNU 扩展更清晰:
将命令和文本拆分为两个
-e
参数以避免这种歧义。