情報のリストを含むファイルがあります。各行には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}}'