3つの列(XYZ座標)を持つテキストファイルがあり、元のファイルの末尾に追加しながら、最初の列に定数を繰り返し追加する必要があります。いくつかのオプションを試しましたが、これは私がやろうとしていることを最もよく示すオプションです。
awk ' { for ( i=-4; i<=4; i+=2 ) $1+=i }' coords.txt >> new_coords.txt
このコマンドは空の new_coords.txt ファイルを生成します。 forループの出力を新しいテキストファイルにインポートする方法は?
最小入力
4 5 6
7 8 9
最小出力
0 5 6
3 8 9
2 5 6
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9
ベストアンサー1
私の考えでは、これはAwkの外側にループを置くことが実際に意味のある(まれな)ケースの1つです。
$ for ((i=-4;i<=4;i+=2)); do awk -v i="$i" '{$1+=i} 1' Input; done
0 5 6
3 8 9
2 5 6
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9
それ以外の場合:
$ awk '{a[NR] = $1; b[NR] = $2 FS $3} END{for(i=-4;i<=4;i+=2){for(j=1;j<=NR;j++) print a[j]+i, b[j]}}' Input
0 5 6
3 8 9
2 5 6
5 8 9
4 5 6
7 8 9
6 5 6
9 8 9
8 5 6
11 8 9