Skip to content
Advertisement

sed – Piping a string before the last line in a file

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”?

Advertisement

Answer

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
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement