我正在尝试打印
for i in 0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40; do
awk -v a="$i" '{printf "%10.2f %10.2f\n", a, ($8*627.509)}' e1.txt > e2.txt
done
但是当我打开该文件时,
1.40 -12111939.85
1.40 -12112479.17
1.40 -12112817.98
1.40 -12112997.55
1.40 -12113047.39
1.40 -12112998.93
1.40 -12112873.57
1.40 -12112695.74
1.40 -12112504.02
1.40 -12112346.74
1.40 -12112316.49
1.40 -12112204.51
1.40 -12112149.56
当它读取值并从其他txt文件e1.txt操作时,请忽略第二列。
如图所示,在这种情况下,仅使用最后一个for循环索引变量。但是我希望根据每行分别打印0.80〜1.40的for循环值。
答案 0 :(得分:3)
为了提高效率,我避免将同一文件处理13次。
BEGIN块看起来很尴尬,因为awk无法声明数组文字。
awk '
BEGIN {
a = "0.80 0.85 0.90 0.95 1.00 1.05 1.10 1.15 1.20 1.25 1.30 1.35 1.40"
n = split(a, as)
}
{
for (i=1; i <= n; i++)
printf "%10.2f %10.2f\n", as[i], ($8 * 627.509)
}
' e1.txt > e2.txt
如果您想先使用所有0.80
,最后要使用所有1.40
,则可以:
awk '...' e1.txt | sort -g > e2.txt