Вам просто нужно прочитать его слева направо:
> file
--> перенаправить все из stdout
в file
.(Вы можете себе представить, что у Вас есть ссылка, точка-точка из stdout
на
file
)2>&1
--> перенаправить все вещи из stderr
в stdout
, который теперь указан на file
.Итак, вывод:
stderr --> stdout --> file
Здесь можно увидеть хорошую ссылку .
.
Вы можете sed
выполнить поиск и замену таким образом.
$ sed 's/mode v/mode sv/g'
Допустим, у меня есть этот образец файла:
$ cat afile.txt
mode v modev mode v
blah
blah blah modev mode
blah
modev mode v
Я могу использовать sed
для поиска / замены этого файла и сохранения резервной копии следующим образом:
$ sed -i.bak 's/mode v/mode sv/g' afile.txt
Теперь у меня есть 2 файла:
$ ls -ltr | grep afile
-rw-rw-r--. 1 slm slm 64 Sep 23 20:13 afile.txt.bak
-rw-rw-r--. 1 slm slm 67 Sep 23 20:15 afile.txt
С изменениями, внесенными в оригинал:
$ cat afile.txt
mode sv modev mode sv
blah
blah blah modev mode
blah
modev mode sv
ПРИМЕЧАНИЕ: Если вам нужно, чтобы это была гарантированная граница слова, вы можете добавить суффикс режима v
в поиск с помощью \ b
.
$ sed -i.bak 's/mode v\b/mode sv/g' afile.txt
Ваше решение из комментария работает только в том случае, если режим является самым первым словом в строке и заменяет все после "mode" на "sv". Из вашего вопроса я считаю, что это не ваше намерение. Нет причин все усложнять, должен работать простой
sed 's/mode /mode s/g'
. Или
sed s/"mode "/"mode s"/g