Додайте символ у певній позиції рядка


2

Я зіткнувся з такою проблемою: мені потрібно додати простір у певному положенні в кожному рядку, щоб перетворити дані з

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

Але може бути, є більш елегантне рішення, не використовуючи тимчасові файли?

Заздалегідь спасибі.

Відповіді:


3

Ви, звичайно, можете це зробити, sedале я знаю perlкраще ...

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

Пізніше

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

sedтакож знає про {}, але потребує втечі: sed -i 's /. \ {12 \} / & /' $ INFILE` працює.
Даніель Андерссон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.