行内の特定の位置に文字を追加する

行内の特定の位置に文字を追加する

私は次のような問題に遭遇しました: 各行の特定の位置にスペースを追加して、データを変換する必要があります。

ATOM      1 HT1 GLY     5      10.346  30.927 130.252  0.00  0.00

(12列目にスペースを追加)

ATOM      1  HT1 GLY     5      10.346  30.927 130.252  0.00  0.00

今、私は次のようにしてそれを達成することができました:

cat $INFILE | cut -c-11 > $INFILE.1
cat $INFILE | cut -c12- > $INFILE.2
paste -d ' ' $INFILE.1 $INFILE.2 > $INFILE

しかし、一時ファイルを使用せずに、よりエレガントな解決策があるかもしれません。

前もって感謝します。

答え1

確かにこれを行うことはできますsedが、私はperlもっと良い方法を知っています...

  perl -p -i -e 's/^(.{12})/$1 /' $INFILE

後で

  sed -i -e 's/^.\{12\}/& /' $INFILE

関連情報