LinuxForum.Fans
Тема

sed - помогите удалить строки

Автор: efremovzone 7 сообщений 1660 просмотров
04.04.2020 17:14 · отредактировано #434477

Всем привет.

Есть файл, содержащий:

text

жгучий
равновесие
любо
конец
начало
любо
красный
зеленый
любовь

Надо удалить все вхождения слова "любо".

Ввожу:

text

cat file1.txt | sed '/любо/d' > file2.txt

Удаляет как "любо", так и "любовь".

Попробовал для эксперимента:

text

cat file1.txt | sed 's/любо/123/g' > file2.txt

Действительно sed заменил "любовь" на "123вь"

Помогите, как правильно реализовать.

Заранее спасибо.

04.04.2020 18:02 #434478

efremovzone, а если так?
[console]cat file1.txt | sed 's/любо//' > file2.txt[/console]
Только лишнее начало строки добавляет, с этим разберётесь сами?

04.04.2020 18:10 · отредактировано #434479
Rizado написал:
efremovzone, а если так?
[console]cat file1.txt | sed 's/любо//' > file2.txt[/console]
Только лишнее начало строки добавляет, с этим разберётесь сами?

Спасибо, но все равно заменяет не так, оставляет вместо "любовь" - "вь", как sed сказать, что "любо" это целое слово, а не вхождение?

26.07.2020 15:08 · отредактировано #435112
efremovzone написал:
[quote=alex_q_2000]cat file1.txt | sed '/^любо$/d' > file2.txt

https://www.linux.org.ru/forum/general/14030386

Огромное спасибо! То что надо![/quote]


А как теперь сделать чтобы найденная строка которая не будет записываться в новый файл выводилась в консоль?
Да, конечно можно сначала грепом вывести в консоль а потом выполнить сед.
А как сделать это только седом для не подымания нагрузки пк

26.07.2020 19:25 · отредактировано #435113
"bestboy" написал:
А как теперь сделать чтобы найденная строка которая не будет записываться в новый файл выводилась в консоль?

Исключить из файла file1.txt строки, которые начинаются с 'любо' (точное совпадение) и вывести:
---
sed '/^любо$/ d' file1.txt
или
grep -v '^любо$' file1.txt

Инверсия:
---
sed '/^любо$/! d' file1.txt
grep '^любо$' file1.txt

13 инструментов для обработки текста в командной оболочке

"bestboy" написал:
...для не подымания нагрузки пк

По нагрузке на процессор я бы разделил так (субъективно): grep (легко), sed (средне - поточный редактор в конвейерах), awk (тяжело - язык построчного разбора и обработки по шаблонам). Кто из них "прожорливее" - для примера из темы не важно, поскольку речь идёт о файле в 10-20 строк. Если файл - это простыня с километр, то нужно стараться "крутиться" вокруг лёгких конструкций c "grep, cut, tail, head, sed". awk - это если припрёт или не хочется возиться, например с cut.

Войдите или зарегистрируйтесь, чтобы ответить.