awkを使用して次の編集行に使用される変数を作成する方法

awkを使用して次の編集行に使用される変数を作成する方法

情報のリストを含むファイルがあります。各行には12個または13個のフィールドがあります。たとえば、フィールド3と4を含むファイルを使用します。

e.g. myfile.txt
user password location date
john passwd1  new_york today
     passwd2  london   yesterday
jeff passwd3  new_york tomorrow

空白の次の行にジョンの名前をコピーする方法を探しています。

これまで、私は次のことを試しています。

Awk '{{if(NF==4) print $0; name=$1}; if(NF==3) print $name,$0}' ./myfile.txt >> ./my_editedfile.txt.

ただし、試行するたびに$1テキストが印刷されたり、何も印刷されたり、次の行の最初のフィールドが2回印刷されたりします。つまり、2番目の行は次のようになります。

$1 passwd2 london yesterday
passwd2 london yesterday
passwd2 passwd2 london yesterday

誰かが1行に変数を設定し、それを使用して次の行を印刷するのに役立ちますか?

ベストアンサー1

あなたは近いです。変数の前にコンマや$は必要ありません。努力する:

awk '{if (NF == 4) {print $0; name=$1} else {print name$0}}'

おすすめ記事