I have a command that prints a single line. I want to add/pipe this line to a file, just above its last line.
my_cmd | sed -i '$i' test
I just find an empty line in the correct place, above the last line.
I notice that when I add any string as '$i foo'
, the "foo" gets printed in the correct place, but I want the piped line to be printed.
How can I use STDIN instead of "foo"?
this should do the trick:
sed -i "\$i $(cmd)" file
test:
kent$ cat f
1
2
3
4
5
kent$ sed -i "\$i $(date)" f
kent$ cat f
1
2
3
4
Tue Sep 30 14:10:02 CEST 2014
5
Instead of passing your output to sed
via pipe, you can use command substitution instead:
$ cat f
First line
Second line
Third line
$ sed -i '$i'"$(echo 'Hello World')" f
$ cat f
First line
Second line
Hello World
Third line
So in your case you can use:
sed -i '$i'"$(my_cmd)" test
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With