ASCII形式のテキストファイルがありますが、特定の値を別のテキストファイルに保存されている値に置き換えたいと思います。
text_1. . . . 50.asc
5列、4行という名前のファイルを考えてみてください。
ファイルのサンプルデータ
0.40007 0.544 0.6795 0.1545 -3.4028
0.61488 0.8471 0.7444 0.3537 0.0709
0.65128 0.6651 0.7948 0.9200 0.893
0.70952 0.5990 0.5061 0.610 0.893
各ファイルの(列5、行1)をReplacing_values.txt
。
データがあります。
1
2
3
4
.
.
.
50
期待される結果(すべてのファイルを続行)
0.40007 0.544 0.6795 0.1545 1
0.61488 0.8471 0.7444 0.3537 0.0709
0.65128 0.6651 0.7948 0.9200 0.893
0.70952 0.5990 0.5061 0.610 0.893
私はこれを試しました
for i in `seq 50`; do x=`awk 'FNR==(1) {print $5}' *.asc`; y=`cat Replacing_values.txt`; echo $x==$y ;done
答え1
柔軟なGNUの使用awk
特徴:
gawk -i inplace -v repl="Replacing_values.txt" 'FNR==1{ getline $5 < repl }1' *.asc
-i inplace
- 入力ファイルの内部変更を許可する-v repl="Replacing_values.txt"
- 代替値でファイル名を保持する変数FNR==1
- 各入力ファイルの最初の行だけが考慮されます。getline $5 < repl
-repl
ファイルから次のレコードを読み取り、5番目の列に割り当てる$5