Wednesday 19 October 2016

awk if/else conditions and printing last line



My two example files looks like this:



F1



Red -
Blue -

Green -


F2



Yellow +
Pink +
ColorX +



I need awk script to print first/last line depending on $2 Field (If $2 == "+" -- print first line; else -- print last line).



I managed to write awk script that prints first line, but how can I add else in order to print last line?



awk '{if (NR == 1 && $2 == "+") print}' F2
Yellow +


How can I modify this code to input F1 and get Green - printed?




Maybe it is possible to add something like this: awk '{if (NR == 1 && $2 == "+") print ; else {END print} }'


Answer



awk 'NR == 1 && $2 == "+" { print ; p=1 ; exit } 
END { if (p != 1) { print $0 } }' INPUTFILE


Note: this assumes, that if the first line does not contains '+' the last line must get printed.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...