The file has the content:

[Greet]

Hello
Hi
Hola

I want to add a string called Hey so that its position is after Hello:

[Greet]

Hello
Hey
Hi
Hola

Is there a way to do the above by using echo or other native linux tools from the command line?

link|improve this question

feedback

2 Answers

up vote 2 down vote accepted

Use sed.

Since the sed command to insert or append lines requires a line break it is easiest to place the sed command in a file and tell sed to execute that file.

Example: to insert Hey after (every) Hello, create the following file:

/Hello/a\
Hey

Then invoke sed:

sed -f appendheyafterhello.sed < sourcefile > resultfile

Here are more sed commands including how to insert a line before a pattern or at a specific line number.

link|improve this answer
feedback

Here's some perl solutions:

perl -p -i -e 'print "Hey\n" if /Hi/'  filename

or

perl -p -i -e 'print "Hey\n" if $. == 4'  filename

or

perl -n -i -e 'print; print "Hey\n" if /Hello/' filename
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.