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列表中两次指定该文件。