AWKを使用:さまざまな数のリンクフィールドを変数に割り当てる

AWKを使用:さまざまな数のリンクフィールドを変数に割り当てる

以前にこの質問を受けたことは本当に申し訳ありません。あまりにも基本的なようで、ドットをつなげていないので、狂っているようです!

デフォルトではテキストファイルがあり、特定の行の2番目のフィールドを変数に割り当てます。

VAR=$(awk 'NR==1 {print $2}' entry.txt)

ただし、時にはテキストファイルの最初の行に4つのフィールドがあることがあります。言いたい

   If ROW 1 has 4 fields  
        VAR = $2, $3 & $4 concatenated
   Else
        VAR = $2 

私はこれが基本的なawkであると確信しています。私はちょうど小さなプロジェクトを進めており、以前に使用したことがありません。本を読まなければならないことはわかりますが、これは本当に小さな台本です!

ありがとう

ベストアンサー1

awk 'NF == 4 { print $2 $3 $4; exit } { print $2; exit }' file

ファイルの最初の行に正確に4つのスペースで区切られたフィールドがある場合、2番目、3番目、4番目のフィールドが連結されます。それ以外の場合は、ファイルの最初の行の2番目のフィールドを返します。プログラムは何も印刷した後に終了するので、これは私たちが見る最初の行だけであると確信しています。

他の論理として:

awk 'NF == 4 { out = $2 $3 $4 } NF != 4 { out = $2 } { print out; exit }' file

または、

awk '{ out = $2 } NF == 4 { out = out $3 $4 } { print out; exit }' file

次のいずれかのコマンドがコマンド置換に含まれます。

var=$( awk ... )

おすすめ記事