Я должен вставить столбец после четвертого столбца с символом 'A'.
Каждая строка должна иметь точно 80 символов (включая пробелы) перед новой строкой; если не мы можем добавить пробелы для компенсации. Я должен сделать это для большого количества файлов.
Представление в качестве примера единственного файла:
Прежде:
ATOM 558 O VAL 86 -12.863 -8.701 -49.495 1.00 64.57 O
ATOM 560 CA VAL 87 -13.628 -10.486 -47.550 1.00 58.11 C
.....
.....
.....
После:
ATOM 558 O VAL A 86 -12.863 -8.701 -49.495 1.00 64.57 O
ATOM 560 CA VAL A 87 -13.628 -10.486 -47.550 1.00 58.11 C
.......
.......
Возможно, можно ли просто заменить одно пространство в столбце 5?
$ sed 's/ / A/5' file
ATOM 558 O VAL A 86 -12.863 -8.701 -49.495 1.00 64.57 O
ATOM 560 CA VAL A 87 -13.628 -10.486 -47.550 1.00 58.11 C
Можно передать несколько имен файлов sed
, просто используйте шарик оболочки как *.txt
или независимо от того, что поймает файлы, Вы хотите отредактировать.
Используйте -i
флаг после тестирования для изменения файлов.
Это не изменит символы на строку... Если необходимо заполнить строки к 80 символам, можно использовать что-то как
sed 's/ / A/5' file | awk '{printf "%-80s\n", $0}'
Используя perl
:
perl -lane '$"="\t"; print sprintf("%-80s", "@F[0..3]\tA\t@F[4..10]");' file
Вывод:
ATOM 558 O VAL A 86 -12.863 -8.701 -49.495 1.00 64.57 O
ATOM 560 CA VAL A 87 -13.628 -10.486 -47.550 1.00 58.11 C
Чтобы проверить, что длина равняется точно "80", передайте вывод awk '{ print length($0), "->", $0 }'
:
$ perl ... | awk '{ print length($0), "->", $0 }'
80 -> ATOM 558 O VAL A 86 -12.863 -8.701 -49.495 1.00 64.57 O
80 -> ATOM 560 CA VAL A 87 -13.628 -10.486 -47.550 1.00 58.11 C