Таким образом, я довольно плохо знаком с использованием оболочки - удара конкретно - и я нахожусь в процессе записи сценария, который переведет файлы, содержащие последовательности DNA в более полезный формат. К сожалению, многие из этих файлов будут содержать посторонние строки, используемые для маркировки информации и т.д. Мне нужна команда sed, которая исключит эти строки, содержащие специальный символ, числа или пробелы. Я нашел, что это - справедливо straightforwards удаление строк с пробелами при помощи
sed '/ /d' infile
и я предполагаю, что удаление строк, содержащих числа, будет подобной стратегией с помощью regex. Я просто действительно не нашел способа приблизиться к специальным символам в sed.
Спасибо
Для удаления любой строки, которая не составлена полностью буквенных символов необходимо было бы добавить, запускаются (^
) и конец ($
) привязки
sed '/^[[:alpha:]]*$/!d' file
Вместо этого Вы могли удалить любую строку, которая содержит по крайней мере одно Примечание небуквенного символа
sed '/[^[:alpha:]]/d' file
, что каре ^
действует как оператор отрицания здесь, а не как привязка как в предыдущем выражении.
, С другой стороны, целая строка grep's использования (-x
или --line-regexp
) опция
grep -x '[[:alpha:]]*' file
(эквивалентный из первого sed выражения) или использование обратного соответствия (-v
)
grep -v '[^[:alpha:]]' file
(эквивалентный из второго sed выражения).
Ответ, взятый из комментария
операции в секунду, я думаю, что мне выяснили его, я просто, изменил мой
sed
для сходства с этимsed '/[[:alpha:]]//!d' infile
, который - если логика следует - должен исключить любую строку, содержащую что-либо кроме[A-Za-z]