У меня есть текстовый файл с именем xid.txt
:
xid: SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: SC32173 id: artf398402
xid: SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Мне нужно добавить строку «PT_» перед «SC48028», «SC32173» ... и так далее. Строка 'SC ...' может начинаться с любой комбинации, может быть 'AC ...' или 'DL ..'
Требуемый выход:
xid: PT_SC48028 id: artf398444
xid: indv1000 id: indv24519
xid: PT_SC32173 id: artf398402
xid: PT_SC21033 id: artf398372
xid: 1001 id: tracker4868
xid: wiki1000 id: wiki10709
xid: proj1234 id: proj12556
Если вы видите вывод выше, мы не должны вставлять 'PT_' перед строками, которые начинаются с 'i', 'p', 'w' & 'numeric'. Я попробовал несколько основных команд для моего требования, используя insert / append в sed.
text-processing
awk
sed
Субрат Саху
источник
источник
Ответы:
С awk :
Выход:
$2~/^[A-Z][A-Z]/
- если 2-е поле начинается с 2 заглавных буквИли седь подход:
источник
awk '$2~/^[A-Z]{2}/{ $2="PT_"$2 }1' xid.txt > xid-tmp && mv xid-tmp xid.txt
или используйте мой второй подходawk
(ту, которую вы обычно устанавливаете в системах Linux),-i inplace
которая позволяет вам редактировать файл на месте, как sed и perl-i
.-i inplace
(я предложил унифицированный подход сmv
командой для OP, чтобы соответствовать переносимости). Что касаетсяBioinformatics beta
сообщества: я только что присоединился к нему. Могут ли быть задачи, связанные с программированием / обработкой Linux / Python? Как ты думаешь?опция Sed
где
-i
редактировать на месте-e
команда для выполненияисточник