Не могу понять поведение команды sed [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть тест файла с некоторыми данными, и я использую sed , чтобы изменить какое-то слово в файле, а затем перенаправить вывод в тот же файл, но после выполнения команды файл не содержит данных. Я не понимаю причины такого поведения?

$ cat test
foo
bar
123
bar
foo
foo
$ sed 's/foo/bar/' test > test
$ cat test
$
2
задан 2 December 2016 в 14:18

2 ответа

Это не лучшая практика для использования того же файла в качестве обоих вводов и выводов. То, что происходит, - то, что оболочка (удар) открывается и усеченный (> в Вашей команде), файл прежде sed читает его.

Так sed 's/foo/bar/' test > test.out был бы правильный способ сделать его.

5
ответ дан 2 December 2019 в 01:36

sed -i 's/foo/bar/g' test

Будет замены foo с bar и писать изменения в test.

$ cat test
bar
bar
123
bar
bar
bar
2
ответ дан 2 December 2019 в 01:36

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

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