У меня есть текст в некоторых строках, который является внутри в ниже, и извлечь Некоторые строки с помощью той команды;
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"
Мое решение:
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
Учитывая файл 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
.