У меня есть файл, который выглядит так:
CHROM POS ID REF ALT
22 345 567 A G
22 454 666 T G
23 454 555 C C
23 565 777 G G
И я хочу изменить его на:
CHROM POS ID REF ALT
22 345 567 A G
22 454 666 T G
X 454 555 C C
X 565 777 G G
Т.е. в столбце 1 я хочу поменять местами 23 на X. Как я могу это сделать?
Спасибо.
2 ответа
В GNU sed
вы могли бы сделать так:
sed -e 's/^23\>/X/' file.txt
Или используя perl
:
perl -pe 's/^23\b/X/' file.txt
Или используя awk
:
awk '{ if ($1 == 23) sub("23", "X"); print }' file.txt
Если вы хотите обновить файл после замены, вы можете использовать любую из этих команд:
sed -i -e 's/^23\>/X/' file.txt
perl -pi -e 's/^23\b/X/' file.txt
Есть ли у вас доступ к каким-либо языкам сценариев? сценарий perl или python для замены начала строки, за которым следует 23, на начало строки, за которым следует X, было бы довольно просто.
См. этот ответ: Найти и заменить внутри текста Файл из команды Bash
Так что-то вроде ...
perl -pi -e 's/^23\s/X /g' /tmp/file.txt
Похожие вопросы
Связанные вопросы
Новые вопросы
shell
Термин «оболочка» относится к общему классу текстовых интерактивных командных интерпретаторов, чаще всего связанных с операционными системами Unix и Linux. Для вопросов о сценариях оболочки, пожалуйста, используйте более конкретные теги, такие как 'bash', 'powershell' или 'ksh'. Без конкретного тега следует предполагать переносимое (POSIX-совместимое) решение, хотя вместо него предпочтительнее использовать «posix» или «sh».