到目前为止,我已经能够找出如何在文件的开头添加一行,但这并不完全是我想要的。我将用一个例子来说明:
文件内容
some text at the beginning
结果
<added text> some text at the beginning
它很相似,但是我不想用它创建任何新的行…
如果可能的话,我希望用sed来做这件事。
到目前为止,我已经能够找出如何在文件的开头添加一行,但这并不完全是我想要的。我将用一个例子来说明:
文件内容
some text at the beginning
结果
<added text> some text at the beginning
它很相似,但是我不想用它创建任何新的行…
如果可能的话,我希望用sed来做这件事。
当前回答
Cat连接多个文件。<()将命令的输出作为文件发送。结合这两者,我们可以在文件的开头和结尾插入行,
cat <(echo "line before the file") file.txt <(echo "line after the file")
其他回答
只是为了好玩,这里有一个使用ed的解决方案,它没有不能处理空文件的问题。您可以把它放到一个shell脚本中,就像这个问题的任何其他答案一样。
ed Test <<EOF
a
.
0i
<added text>
.
1,+1 j
$ g/^$/d
wq
EOF
上面的脚本将要插入的文本添加到第一行,然后连接第一行和第二行。为了避免ed在无效连接错误时退出,它首先在文件末尾创建一个空行,如果它仍然存在,则稍后删除它。
限制:如果<added text>恰好等于单个句点,此脚本将不起作用。
Cat连接多个文件。<()将命令的输出作为文件发送。结合这两者,我们可以在文件的开头和结尾插入行,
cat <(echo "line before the file") file.txt <(echo "line after the file")
如果文件只有一行,你可以使用:
sed 's/^/insert this /' oldfile > newfile
如果它不止一行。之一:
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
我已经包括了后者,以便您知道如何进行行范围。这两种方法都用要插入的文本“替换”受影响行的开始行标记。您还可以(假设您的sed足够现代)使用:
sed -i 'whatever command you choose' filename
进行就地编辑。
Sed可以对地址进行操作:
$ sed -i '1s/^/<added text> /' file
每个答案上神奇的1是什么?行解决!
想在前10行添加<添加的文本> ?
$ sed -i '1,10s/^/<added text> /' file
或者你可以使用命令分组:
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}
嗨,用马车回:
sed -i '1s/^/your text\n/' file