オプションのフィールドを印刷するには、最初の列の指示に従います。

オプションのフィールドを印刷するには、最初の列の指示に従います。

awk元のファイルを混乱させることなく、手順の最初の列に従って複数のコマンドを同時に印刷したいファイルがあるとします。これは、2つの別々の印刷で発生するため、次のようになります。

文書:

End 1st 2nd 3rd
Fin 1st 2nd 3rd

次のコマンドを1行にまとめたいです。

awk '$1 ~ /^E/ {print $2}'
awk '$1 ~ /^F/ {print $3}'

次の出力を取得します。

End 1st
Fin 2nd

編集する 「元のファイルを台無しにする」ということは次のとおりです。

ファイル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    

2つの別々のawk印刷を実行すると、ファイル3の情報をファイル2の名前と一致させることはできません(特にフィールド数が^F同じでない場合)。

awk '$1 ~ /^E/ {print $2}' File 1 > File 2

出力(ファイル2):

NAME1
NAME2

awk '$1 ~ /^F/ {print $3}' File 1 > File 3

出力(ファイル3):

1992        
London       
HP           
1989        
Geneva      
SIB  

ただし、(回答で提案されているように)ここに参加すると、次のような結果が得られます。

予想出力:

NAME1
1992        
London       
HP  
NAME2
1989        
Geneva      
SIB  

ベストアンサー1

awk '$1 ~ /^E|^F/ {if ($1 == "End") print $1" "$2; if ($1 == "Fin") print $1" "$3}'

または

awk '/^End/{print $1" "$2}/^Fin/{print $1" "$3}'

(ありがとうございます。ジド)

動作する必要があります。

おすすめ記事