Используйте всю строку и удалите строки определенной длины. - PullRequest
0 голосов
/ 23 апреля 2020

Пока у меня есть:

cat FileName | tr -s '[a-z]' '[A-Z]'

, но я не могу понять, как удалить строку, в моем случае длиной от 4 до 8 символов. Я думаю, что мне нужно использовать sed, но я вижу только способы удаления определенных строк, или начала или конца строки, а не строк между длиной X и Y.

Кто-нибудь знает, как это сделать sh это?

1 Ответ

1 голос
/ 23 апреля 2020

Вы действительно можете использовать sed:

$ cat test.txt 
aaa
bbbb
ccccc
dd
$ sed '/^.\{4\}$/d' test.txt 
aaa
ccccc
dd

^ означает начало строки, $ означает конец строки. .\{4\} означает символ (.), повторенный четыре раза (\{4\}). d в конце удаляет строки, если регулярное выражение совпадает.

Используйте sed -i '/^.\{4\}$/d' test.txt, чтобы применить изменения к файлу вместо вывода его в стандартный вывод.

Для диапазона от 4 до 8 символов, используйте:

$ sed '/^.\{4,8\}$/d' test.txt 
aaa
dd

Чтобы сделать это заглавными:

 $ sed '/^.\{4,8\}$/d; s/./\u&/g' test.txt 
AAA
DD

Ресурсы:
[1] Мой мозг
[2] С заглавными буквами в sed или awk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...