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

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

pbzip2 -dc FILE.tar.bz2 | tar -tvfW -
7
31.08.2018, 18:45
2 ответа

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

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

grep '[^ATCG]' filename

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

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

tr -c -d 'ATCG\n' <filename >newfilename

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

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

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


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

/[^ATCG]

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

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

19
27.01.2020, 20:14

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

Find any line in VI that has something other than ATCG

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

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

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

0
27.01.2020, 20:14

Теги

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