LINUX.ORG.RU

sed не работает при записи в тот документ, из которого читает

 , ,


0

1

Здравствуйте, я хотел делать проект с sed, но почему-то сабж.

Пример неработанья:

~$ echo 'В чащах юга жил бы цитрус? Да, но фальшивый экземпляр' > sedtest
~$ cat sedtest
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр

Известная разнобуквица записалась в файл.

~$ sed 's/цитрус/овощ/' sedtest
В чащах юга жил бы овощ? Да, но фальшивый экземпляр

И sed её переделывает. Но!

~$ sed 's/цитрус/овощ/' sedtest > sedtest
~$ cat sedtest
~$ 

Файл становится пустым, wtf?

Окей, при добавлении в файл все работает.

~$ echo 'В чащах юга жил бы цитрус? Да, но фальшивый экземпляр' > sedtest
~$ cat sedtest
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр
~$ sed 's/цитрус/овощ/' sedtest >> sedtest
~$ cat sedtest
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр
В чащах юга жил бы овощ? Да, но фальшивый экземпляр
~$ 

И при записи в другой файл – тоже.

~$ echo 'В чащах юга жил бы цитрус? Да, но фальшивый экземпляр' > sedtest
~$ cat sedtest
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр
~$ sed 's/цитрус/овощ/' sedtest >> sedout
~$ cat sedout
В чащах юга жил бы овощ? Да, но фальшивый экземпляр
~$ 

А теперь у меня вопрос. Я хочу сделать локальный транслятор с bbcode на html. Temp-документы плодить не хочется. Даже вариант с переливанием текста из одного документа в другой нежелательно. Как это реализовать?

Ответ на: комментарий от zagatov_lev

Ты хотел писать изменения сразу в файл. sed это умеет. Если твой вопрос состоит в том, что «а пачиму я нимагу вот так», от ответ - потому. Если вопрос задан с целью решить проблему записи - ответ я дал в силу своих знаний.

nhdt
()
Ответ на: комментарий от zagatov_lev

Работает, что ты вводишь - ФЗ

[user@gw tmp]$ cat sedtest
В чащах юга жил бы цитрус? Да, но фальшивый экземпляр
[user@gw tmp]$ sed -i 's/цитрус/овощ/g' sedtest
[user@gw tmp]$cat sedtest
В чащах юга жил бы овощ? Да, но фальшивый экземпляр
infomeh ★★
()
Последнее исправление: infomeh (всего исправлений: 1)
Ответ на: комментарий от nhdt

Какой тролль? Это была версионная бага, наверное, так как после обновления заработало

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