Apply awk to everything except for first line

Viewed 191

I'm looking to apply some awk processing to add the word "OR" to the beginning of each line, except for the first line. However, I'd still like the first line to print out.

Currently, I'm using the current command:

awk '$0="OR "$0' file.txt

This will give me the following output:

OR line1
OR line2
OR line3 etc

How can I get it so that it spits out the following?:

line1
OR line2
OR line3 etc
5 Answers

You may use this awk:

awk 'NR > 1 {$0 = "OR " $0} 1' file

line1
OR line2
OR line3

Here NR > 1 condition will execute action block i.e. $0 = "OR " $0 for 2nd record onwards only but 1 will print all the rows.

sed solution

$ sed '2,$s/^/OR /' file

starting second line insert "OR " at the beginning of each line.

awk 'NR==1 {print} NR>1 {print "OR "$0}'

Adding one more approach here, written and tested with shown samples in GNU awk.

awk '{print val $0; val="OR "}' Input_file

With shown samples, output will be as follows.

line1
OR line2
OR line3
OR line4

Another awk

$ cat justin.dat
line1
line2
line3
line4
$ awk ' { printf("%s%s\n",sep,$0); sep="OR " } ' justin.dat
line1
OR line2
OR line3
OR line4
$
Related