LINUX.ORG.RU

SED удаление спец.символов и символов другого языка

 ,


0

1

Доброго времени. Нужна помощь с командами. Есть файлы с текстом вида:

столбец1 столбец2 столбец3
на очень много строк. Нужно удалить все строки, где присутствуют только спец.символы и строки, в составе которых есть буквы не из латиницы. Это отдельные операции. Знаю, что для удаления одновременно и того, и другого, было бы:
sed -e '/[0-9a-zA-Z_]/!d' file
А как по отдельно удалить все строки только из спец символов, а потом все строки только содержащие нелатинские буквы. Пробую:
sed -e '/^[:cntrl:]*$/d' file
sed -e '/^[[:cntrl:]]*$/d' file
sed -e '/[[:cntrl:]]/d' file
sed -e '/[:cntrl:]/d' file
Ни одна не сработала. Интересуют способы только через sed.


а какие у тебя символы, что ты их считаешь управляющими? например, пробел, который у тебя гарантированно есть в каждой строке, судя по формату, таким символом не является

anonymous
()

Интересуют способы только через sed

Шо, в домашке прямо так и написано?

thesis ★★★★★
()
Ответ на: комментарий от anonymous

Может быть я не правильно понял назначение [:cntrl:]. В таком случае поясните, какая маска отвечает за все спец.символы. Допустим, команда

sed -e '/^[:cntrl:]*$/d' file
должна удалить все строки, вроде
@#%$#% ()()()()() ...@#@#@#
или же
sed -e '/^[:cntrl:] *[:cntrl:] *[:cntrl:]$/d' file
Я прав?

Garrdo
() автор топика
Ответ на: комментарий от anonymous

За наводку на :punct: спасибо. Маны, которые изучал по sed, такой маски не содержали. Тем не менее.. Создал для теста файл со строками

123
!!!
Пробую
sed -n '/[:punct:]/p' file
sed -n '/[[:punct:]]/p' file
в ответ тишина.

Garrdo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.