Append text to file using sed

微笑、不失礼 提交于 2020-01-12 14:00:49

问题


How can I write text to a file using sed? More specifically I would it add null variables to my blank text file that was created using touch. The syntax of sed is very confusing to me.


回答1:


If you're just appending text to the end of the file then you wouldn't use sed in the first place.

echo "some text" >> somefile.txt



回答2:


Use $ a.

sed -i "$ a some text" somefile.txt



回答3:


Adding a late post because while the accepted answer is the simplest solution to this problem, the question actually highlights a couple of common situations:

  1. Need to edit a file via sudo
  2. Trying to use sed to modify an empty file.

In short, you can't touch, then edit a file with sed. Sed doesn't work on empty files, but occasionally you need to do the equivalent of

sudo echo "some text" >> somefile.txt

sudo doesn't like the redirect, but there are workarounds:

echo "some text" | sudo tee somefile.txt

or if pipes are not an option either, or you simply must use sed, or you just like complexity:

dd if=/dev/zero count=1 bs=1 of=somefile.txt
sed -i '$ a some text' somefile.txt
sed -i '1 d' somefile

On some systems,. you might have to use sed -i -e '$ a ...




回答4:


This sounds like an XY Problem to me. You might get better or more useful answers if you ask about what problem you're trying to solve, rather than asking for help implementing a particular solution.

But if you absolutely must do this in sed, you can use sed's r command to read a file. For example:

[ghoti@pc ~/tmp]$ cat one
RED
BLUE
[ghoti@pc ~/tmp]$ cat two
green
yellow
[ghoti@pc ~/tmp]$ echo ">> start"; sed '$r two' one; echo ">> end"
>> start
RED
BLUE
green
yellow
>> end
[ghoti@pc ~/tmp]$ 

The sed command $r two causes sed to slurp in the file named "two" after processing the last line of input (which in this case is from the file "one").

Note that this merges one file into the stream of another file, but sed's "standard output" (stdout) is what contains the full/combined stream. You can redirect that output to a file per Ignacio's answer if that's what you want.



来源:https://stackoverflow.com/questions/22289522/append-text-to-file-using-sed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!