次のようなfile.txtがあります。
1
2
3
4
5
6
awkコマンドを使用して新しい列に値(Apple)を追加するには、次の手順を実行できます。
awk -v RS='\r\n' 'BEGIN { OFS = " " } {print $0, "Apple"}' file.txt > file_new.txt
これにより、以下が提供されます。
1 Apple
2 Apple
3 Apple
4 Apple
5 Apple
6 Apple
それでは、次のような出力が欲しいとしましょう。
1 Apple
2 Apple
3 Orange
4 Orange
5 Banana
6 Banana
awkコマンドを修正する方法は?
答え1
ファイルは次のようになります。
1
2
3
4
5
6
あなたはそれを使用することができます:
awk 'BEGIN { OFS = " "; a["1"]="Apple";a["2"]="Orange";a["3"]="Banana"; } {print $0,a[int(NR/2 + NR%2)]}' file
あなたは得るでしょう:
1 Apple
2 Apple
3 Orange
4 Orange
5 Banana
6 Banana
答え2
少しハッキングされていますが、以下をgetline
使用して、現在のレコード番号に基づいて標準入力から新しい果物を読み取ることができます。
printf 'Apple\nOrange\nBanana' |
awk -v n=2 'NR%n == 1 {getline x < "/dev/stdin" } {print $0, x}' file.txt
1 Apple
2 Apple
3 Orange
4 Orange
5 Banana
6 Banana