1

複数のテキスト ファイルの列の間に書式設定された列を追加しようとしています。使用することで

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

1 1800 3 4
10 9900 30 40
100 90900 300 400

複数の .dat ファイルに対して上記の操作を行うにはどうすればよいですか?

4

1 に答える 1

1
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

文字(el) は数字(one)lに非常に似ているため、変数名として使用しないでください。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
于 2013-07-25T07:43:06.913 に答える