For loop 使用bash向多个文本文件添加列

For loop 使用bash向多个文本文件添加列,for-loop,awk,For Loop,Awk,我试图在多个文本文件的列之间添加一个格式化列。利用 awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file 我可以转换具有表单的文件 1 2 3 4 10 20 30 40 100 200 300 400 到 如何对多个.dat文件执行上述操作 tmp="/usr/tmp/tmp$$" for file in * do awk '...' "$file" "$file" > "$tmp" &am

我试图在多个文本文件的列之间添加一个格式化列。利用

awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file
我可以转换具有表单的文件

1 2 3 4
10 20 30 40 
100 200 300 400

如何对多个.dat文件执行上述操作

tmp="/usr/tmp/tmp$$"
for file in *
do
    awk '...' "$file" "$file" > "$tmp" && mv "$tmp" "$file"
done
不过,请编写您的脚本:

awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file
切勿将字母
l
(el)用作变量名,因为它看起来太像数字
1
(一)。我实际上会这样写:

awk 'NR==FNR{c[++n]=$3;next}{$2=($3+c[1])*c[n]" "$2}7' file file
或者,如果大文件需要内存:

awk 'NR==FNR{c[NR==1]=$3;next}{$2=($3+c[1])*c[0]" "$2}7' file file
不过,请编写您的脚本:

awk 'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]" "$2}7' file file
切勿将字母
l
(el)用作变量名,因为它看起来太像数字
1
(一)。我实际上会这样写:

awk 'NR==FNR{c[++n]=$3;next}{$2=($3+c[1])*c[n]" "$2}7' file file
或者,如果大文件需要内存:

awk 'NR==FNR{c[NR==1]=$3;next}{$2=($3+c[1])*c[0]" "$2}7' file file

在shell中的
for
循环中执行此操作。我知道,但如何执行此操作?在shell中的
for
循环中执行此操作。我知道,但如何执行此操作?我使用了以下命令:tmp=“../tmp$$”;对于*.text格式的文件;doawk'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]“$2}7'”$file”>“$tmp”和&mv“$tmp”“$file”;完成。但它只是删除了文件。是的,会的。您忘记在arg列表中指定两次文件。我使用了以下命令:tmp=“../tmp$$”;对于*.text格式的文件;doawk'NR==FNR{c[NR]=$3;l=NR;next}{$2=($3+c[1])*c[l]“$2}7'”$file”>“$tmp”和&mv“$tmp”“$file”;完成。但它只是删除了文件。是的,会的。您忘记在arg列表中两次指定该文件。