Suppose I have a file in which I'd like to simultaneously print different awk commands following the first column instuctions, without messing up the original file (as it would happen with two separate prints):
File:
End 1st 2nd 3rd
Fin 1st 2nd 3rd
I'd like to combine the following commands into a one-liner:
awk '$1 ~ /^E/ {print $2}'
awk '$1 ~ /^F/ {print $3}'
To obtain the following output:
End 1st
Fin 2nd
EDIT What I meant by saying "messing up the original file":
File 1:
E1 NAME1 LASTNAME1
FA 22 1992 #age, year
FC UK London #country, city
FJ IT HP #job, company
E2 NAME2 LASTNAME2
FA 25 1989
FC CH Geneva
FJ CS SIB
Now, if I run two separate awk prints, I won't be able to match the information in File 3 with the names of File 2 (especially if the number of ^F fields are not of the same number):
awk '$1 ~ /^E/ {print $2}' File 1 > File 2
Output (File 2):
NAME1
NAME2
awk '$1 ~ /^F/ {print $3}' File 1 > File 3
Output (File 3):
1992
London
HP
1989
Geneva
SIB
But, If I join them (as suggested in the answers) I'll be able to have something like this:
Expected output:
NAME1
1992
London
HP
NAME2
1989
Geneva
SIB
awk '$1 ~ /^E/ {print $1,$2}; $1 ~ /^F/ {print $1,$3}'?^Flines (let's say "descrption lines") belonging to a same^Eline (let's say, an "identifier"), and I performed two separateawk, I would end up with two well written files, but I wouldn't be able to distinguish the^Flines belonging to a given^Eline.awkcommando, he'll just getEndlines. The followingFinlines, which are related to theEndlines, are excluded in this search and therefor the correlation between both types is lost. So he needs anawkcommand that prints them in order.