как удалить все в столбце после второго двоеточия

Недавно я перешел с Python 3.6 на 3.7. Я совершенно уверен, что завиток работал до этого. Тот факт, что conda install libssh2устраняет проблему, заставляет меня думать, что обновление python сломало curl. Это может быть объяснением того, что Сэм Х отсутствует, т. е. «...не имеет для меня смысла...».

0
17.04.2020, 00:55
3 ответа

используя awk, если вы хотите удалить какой бы то ни было символ..

awk -F":" '{ print $1":"$2 }' gokind_SNPs.txt > gokind_SNPs_OUTPUT.txt
1
19.03.2021, 02:28

Никогда не пытайтесь писать в тот же файл, который вы пытаетесь прочитать:

sed 's/:[A-Z].* / /' gokind_SNPsF.txt > tmp && mv tmp gokind_SNPsf.txt

или используйте sed -i, если ваша версия sed поддерживает это.

0
19.03.2021, 02:28

Ваша команда ничего не сделала, потому что используемое вами регулярное выражение пытается сопоставить пробел, которого нет в данных.

Вместо этого используйте

sed 's/:[A-Z].*//' gokind_SNPsF.txt >new-gokind_SNPsf.txt

При этом удаляется весь текст в каждой строке, начиная с первой :, за которой непосредственно следует заглавная буква. Я также решил ничего не заменять, а не пробелом, и удалил ненужный флаг g.

Я предполагаю, что вы на самом деле не запустили показанную команду, так как это усекло бы (очистку )вашего файла данных еще до запускаsed(из-за перенаправление в тот же файл, который вы читаете из ).

Если вы хотите выполнить редактирование в -месте с помощью sed, используйте sed -i, но также прочитайте " Как я могу добиться переносимости с помощью sed -i (в -редактирование места )? ".

Чуть более быстрая альтернатива вашей команде sed

cut -d: -f -2 gokind_SNPsF.txt >new-gokind_SNPsf.txt

, который просто извлекает первые два:-поля с разделителями из каждой строки. Вместо -f -2вы можете использовать -f 1,2или -f 1-2, чтобы указать, что вы хотите получить первые два столбца.

Используя awk, вы должны сделать

awk -F : 'BEGIN { OFS=FS } { print $1, $2 }' gokind_SNPsF.txt >new-gokind_SNPsf.txt

для печати только двух первых полей из каждой строки в новый файл.

В GNU awkвы могли выполнять редактирование в -месте с помощью

awk -i inplace -F : 'BEGIN { OFS=FS } { print $1, $2 }' gokind_SNPsF.txt

См. " Как изменить файл в -месте с помощью awk? (как с "sed -i")" для получения дополнительной информации об этом.

1
19.03.2021, 02:28

Теги

Похожие вопросы