LINUX.ORG.RU

История изменений

Исправление mord0d, (текущая версия) :

cat 1.txt | sed -i '/[0-9]\+:sss/d' 1.txt

Здесь не нужен cat:

sed -i '/[0-9]\+:sss/d' 1.txt

sed с выводом в консоль и записью в файл одновременно

Чтобы было аккуратно, можно делать так:

sed '/[0-9]\+:sss/d' 1.txt | tee 2.txt && rm 1.txt && mv 2.txt 1.txt

---

UPD:

Но как вывести в консоль (НЕ в файл) эти удаленные строки?

Никак, sed их отбрасывает.

Можно написать комплексную функцию (@vodz писал построчный перебор файла, но я задолбаюсь искать по форуму), которая перебирает файл построчно. Нужно только переписать тело цикла, чтобы отбрасываемые строки писались в stdout/stderr, а остальные летели в файл.

Исправление mord0d, :

cat 1.txt | sed -i '/[0-9]\+:sss/d' 1.txt

Здесь не нужен cat:

sed -i '/[0-9]\+:sss/d' 1.txt

sed с выводом в консоль и записью в файл одновременно

Чтобы было аккуратно, можно делать так:

sed '/[0-9]\+:sss/d' 1.txt | tee 2.txt && rm 1.txt && mv 2.txt 1.txt

---

UPD:

Но как вывести в консоль (НЕ в файл) эти удаленные строки?

Никак, sed их отбрасывает.

Исходная версия mord0d, :

cat 1.txt | sed -i '/[0-9]\+:sss/d' 1.txt

Здесь не нужен cat:

sed -i '/[0-9]\+:sss/d' 1.txt

sed с выводом в консоль и записью в файл одновременно

Чтобы было аккуратно, можно делать так:

sed '/[0-9]\+:sss/d' 1.txt | tee 2.txt && rm 1.txt && mv 2.txt 1.txt