LINUX.ORG.RU

Чтение и сохранение в один файл, ./file.txt > ./file.txt

 


0

2

Есть файл из которого нужно выкинуть определенную строку, делаю это так:

grep -v «foobar» ./file.txt

Хотелось бы сразу сохранить эти изменения в этом же файле, что то вроде:

grep -v «foobar» ./file.txt > ./file.txt

но как вы понимаите в таком случаи файл окажется пустым. ЛОР, научи как правильно такое делать.


Про sed уже рассказали, а если хочется именно grep и без временного файла, то можно так:

$ echo -e 'aaa\nbbb\nccc' >filename

$ cat filename 
aaa
bbb
ccc

$ grep -v bbb filename | tee filename >/dev/null

$ cat filename 
aaa
ccc
Или так:
$ echo -e 'aaa\nbbb\nccc' >filename

$ cat filename 
aaa
bbb
ccc

$ grep -v bbb filename | sponge filename

$ cat filename 
aaa
ccc

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

Не вижу такого у себя в системе. Не хочется что то ставить для такого (

hama
() автор топика

sponge из пакета moreutils

sergej ★★★★★
()
Ответ на: комментарий от Lavos

мне кажется tee будет лажать если размер файла больше буфера пайпа (обычно 4К)

sergej ★★★★★
()

попробуй пить и ссать из/в одной бутылки.

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.