Linux
迭代地將值添加到文本文件的列
我有一個 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
我認為這可能是(罕見的)將循環放在 Awk 之外的情況之一:
$ 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