如何在文件的第一行之前插入文本?

如何在文件的第一行之前插入文本?

我一直在寻找sed将文本添加到文件中特定行的命令。这可以在第 1 行之后添加文本:

sed '1 a\

但我想添加它第 1 行。它将是:

sed '0 a\

但我收到此错误:invalid usage of line address 0

有什么建议吗?

答案1

使用 的sedinsert ( i) 选项将在前一行插入文本。

sed '1 i\

问题作者的更新:

为了让它在适当的位置编辑文件 - 使用 GNU sed- 我必须添加 -i选项:

sed -i '1 i\anything' file

还有语法

sed  -i '1i text' filename

对于非 GNU sed

您需要在反斜杠之后1i\和之后立即按回车键first_line_text

sed -i '1i\
first_line_text
'

另请注意,一些非 GNUsed实现(例如 macOS 上的实现)要求标志的参数-i(用于-i ''获得与 GNU 相同的效果sed)。

对于根本sed不支持的实现-i,请在不使用此选项的情况下运行,但将输出重定向到新文件。然后用新创建的文件替换旧文件。

答案2

Echo 用于获取文本。 Cat filename - 在控制台中打印文件,然后使用它发送到另一个文件 filename1,然后我们将 filename1 移动到 filename 以将文本插入到所需文件的第一行。

  (echo "some text" && cat filename) > filename1 && mv filename1 filename

答案3

您可以使用 POSIX 工具ex

ex a.txt <<eof
1 insert
Sunday
.
xit
eof

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html

答案4

sed  -i '1i new_text' file_name

如果不指定该-i选项,它将不会显示任何错误,并在标准终端上显示输出,但不会将文本插入文件中。

相关内容