Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
980 views
in Technique[技术] by (71.8m points)

linux - 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"?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...