私のフォルダにはtxtファイルがたくさんあります。各ファイルにはこの形式の1行が含まれています。
8852 0.53451 0.55959 0.65494 0.36047
次の行に固定数字を追加し、残りの4つの列は以下のように元の行からコピーされます。
8852 0.53451 0.55959 0.65494 0.36047
9997 0.53451 0.55959 0.65494 0.36047
これまで、フォルダ内のコマンドを実行して9997を追加しました。
find *.txt -exec sh -c 'echo "9997" >> $0' {} \;
残りの4つの列をコピーしました。
for files in .; do awk '{$1=""; print substr($0,2)}' *.txt;done
ただし、各ファイルの次の行ではなく出力に印刷されます。
まだすべて整理できず、近づいたような感じもしますが、おそらく間違った方向かもしれません。私はawk '{print "\n"$2,$3,$4,$5}' を試しましたが、やはり動作しませんでした。
助けてくれてありがとう!ありがとうございます。
ベストアンサー1
私はお勧めしますawk '{print; $1 = 9997; print}'
$ echo '8852 0.53451 0.55959 0.65494 0.36047' | awk '{print; $1 = 9997; print}'
8852 0.53451 0.55959 0.65494 0.36047
9997 0.53451 0.55959 0.65494 0.36047
複数のファイルに変換を適用すると述べました。ループを使用してこれを行うことができます。
for f in *.txt; do awk '{print; $1 = 9997; print}' "$f"; done
または(再帰的に)使用find
find . -name '*.txt' -exec awk '{print; $1 = 9997; print}' {} \;
ただし、拡張子が . である最新バージョンの GNU Awk がない場合、結果はリンクされ、-i inplace
標準出力に書き込まれます。