удаление строк sed

У меня есть текст в некоторых строках, который является внутри в ниже, и извлечь Некоторые строки с помощью той команды;

cat meyveler.txt

elma armut ve ayva daha cok kış meyveleridir
ancak,
yaz mevyeleride oldukca lezzetli oldugu gözden kacmamalıdır.
ayrıca tüm bunlara istinaden tüm calısmalat gözden gecirilebilir olmalıdır.
12.ayın gelmesiyle beraber ayva ve Nar sezonu hareketlenmeye,
Bus senenin bitisiylede Hamsiler hareketlenmeye baslayacaktır.
=tabi bu işlemler bu sekilde akıp gider

И извлечь некоторые строки с помощью той команды;

cat meyveler.txt | egrep "^[^a-z].*$"

12.ayın gelmesiyle beraber ayva ve Nar sezonu hareketlenmeye,
Bus senenin bitisiylede Hamsiler hareketlenmeye baslayacaktır.
=tabi bu işlemler bu sekilde akıp gider

Теперь я пытаюсь удалить эту строку этим, но я получаю ошибку, что я должен использовать для этого?

cat meyveler.txt | egrep "^[^a-z].*$" | xargs -Iline sed -i "/line/d"
2
задан 9 August 2017 в 22:06

2 ответа

Мое решение:

grep '^[a-z]' meyveler.txt

, Который только возвращает строки, соответствовавшие Вашему желаемому шаблону, нет никакой потребности использовать cat, egrep, xargs или sed.

<час>

Объяснение ошибки:

у Вас нет файла для обработки использования sed, таким образом, Вы не можете использовать -i.

  • -i редактирования файлы в их месте

На самом деле Вы передаете свое содержание файла meyveler.txt по каналу как поток к эти sed, команда, и sed отредактирует его в stdout.

  • Примечание, что Ваш cat команда является ненужной, xargs также.

Однако, поскольку steeldriver упомянул, что, Вы ищете:

egrep "^[^a-z].*$" meyveler.txt | xargs -Iline sed -i "/line/d" meyveler.txt
2
ответ дан 2 December 2019 в 01:54

Учитывая файл meyveler.txt, можно удалить все строки, которые запускаются не со строчной буквы a-z с sed просто как это:

sed '/^[^a-z]/d' meyveler.txt

Вышеупомянутая команда будет читать из Вашего файла и печатать фильтрованный вывод к терминалу. Если Вы хотите отредактировать непосредственно оперативный файл, добавьте -i флаг. Можно сохранить исходный файл как резервное копирование при определении суффикса (например. -i.bak сохранит исходные данные как meyveler.txt.bak):

sed -i '/^[^a-z]/d' meyveler.txt

Вам не нужно cat для чтения файла и Вам не нужно grep или egrep отфильтровать их. Вся эта функциональность создается в sed.

3
ответ дан 2 December 2019 в 01:54

Другие вопросы по тегам:

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