Intereting Posts
Как каталоги для белых списков для единиц в systemd Systemd LimitNOFILE ограничен до 4096 Есть ли способ эмулировать беспроводную карту в qemu / kvm? Необходимо распечатать соответствующие строки в другом файле Стандартный хранилище ключей / значений для unix исключить строки из файла на основе определенных значений в определенных столбцах Почему wget -r не получает все подкаталоги FTP? Как я могу использовать arptables для ограничения количества исходящих запросов ARP в секунду? Команда Linux 'w', получить время ожидания в секундах Изменение удаленного дистрибутива Linux при сохранении данных Что эквивалентно CONFIG_MORE_COMPILE_OPTIONS и CONFIG_COMPILE_OPTIONS для ядер 3.x и 4.x? Разрешение Slackware Console при двойной загрузке с GRUB2 другого дистрибутива? Как получить чистую среду в оболочке ksh? vim команды разных категорий и обозначений VGA и DVI, установите консоль ядра по умолчанию на один

Найдите любую строку в VI, которая имеет что-то кроме ATCG

У меня есть файл геномных данных длиной около 5 миллионов строк, в котором должны быть только символы A, T, C и G. Проблема в том, что я знаю, насколько большим должен быть файл, но он немного больше. Это означает, что что-то пошло не так в анализе, или есть строки, которые содержат что-то кроме геномных данных.

Есть ли способ найти какую-либо строку, которая имеет что-то кроме A, T, C или G? Из-за характера файла, любые другие буквы, пробелы, цифры, символы не должны присутствовать. Я прошел поиск символа за символом, поэтому я надеялся, что будет более легкий путь.

Прежде всего, вы определенно не хотите открывать файл в редакторе (он слишком велик для редактирования).

Вместо этого, если вы просто хотите определить , содержит ли файл что-либо кроме A , T , C и G , вы можете сделать это с

 grep '[^ATCG]' filename 

Это вернет все строки, которые содержат что-либо кроме этих четырех символов.

Если вы хотите удалить эти символы из файла, вы можете сделать это с

 tr -c -d 'ATCG\n' newfilename 

(если это правильный способ «исправить» файл или нет, я не знаю)

Это удалит все символы в файле, которые не являются одним из четырех, и также сохранит символы новой строки ( \n ). Отредактированный файл будет записан в newfilename .

Если из-за систематической ошибки что-то добавлено в файл, это можно исправить с помощью sed или awk , но мы пока не знаем, как выглядят ваши данные.


Если у вас есть файл, открытый в vi или vim , то команда

 /[^ATCG] 

найдет следующий символ в буфере редактирования, который не является A , T , C или G

И :%s/[^ATCG]//g удалит их все.

Я сосредоточился на названии

Найдите любую строку в VI, которая имеет что-то кроме ATCG

И я проверил это из редактора VI, так называемого «режима последней строки».

:%!tr -c -d 'ATCG\n

: входит в режим командной строки, % соответствует всему файлу как диапазону ! фильтры, которые проходят через внешнюю команду tr -c -d 'ATCG\n которая совпадает с написанной @Kusalananda :).