Может ли sed сохранить вывод в файл?


34

> может это сделать.

echo "text" > file

tee может это сделать.

echo "test" | tee file 

Можно sedсделать это без использования одного из вышеперечисленных? Можно ли сохранить вывод sedкоманды в файл, не используя >или tee?


Пожалуйста, попробуйте найти ответ самостоятельно, прежде чем размещать вопросы здесь. Первое, что мы просим наших пользователей, это поиск и исследование перед публикацией. Все, что вам нужно было сделать, - sed '' file > newfileи вы бы увидели, что >действительно можно использовать sedс любой другой программой.
Тердон

1
Это все еще с помощью >оператора. Мне было интересно, если бы была команда sed, которая могла бы использоваться вместо этого. Но я удалю этот вопрос, если это так плохо.
Фолатт

Ах, верно. ОК, это совсем другой вопрос. Поскольку вы приняли sed -iответ, я отредактирую ваш вопрос и уточню, что вам нужно.
Тердон

Я согласился " sed не предназначен для перенаправления данных, как teeи >(должны) быть".
Фолатт

Ответы:


50

tee и> могут использоваться для перенаправления данных, потому что они предназначены для перенаправления данных в linux.

С другой стороны, sed - это потоковый редактор. sed не предназначен для перенаправления данных, как tee и> должен быть. Однако вы можете использовать сочетание команд, чтобы сделать это.

используйте тройник или> с седом

sed 's/Hello/Hi/g' file-name | tee file

или

sed 's/Hello/Hi/g' file-name > file

используйте sed с опцией -i

sed -i 's/Hello/Hi/g' file-name

последний не перенаправляет, а вносит изменения в сам файл.


2
Спасибо. Вы поняли мой вопрос. Так что ответ - нет. Я подумал, что sedон сам может это сделать, потому что он также способен создавать файлы резервных копий с -i.bakопцией.
Folatt

2
Правильный. Также -i.bak не является фиксированной опцией, вы можете использовать любое расширение, которое вы хотели бы иметь в своем файле резервной копии. например -i.log тоже будет работать. :)
ankidaemon

Я просто хотел бы добавить, что на самом деле искал echo "test" | dd of=file status=none, подавляя вывод эха, не используя скрытое перенаправление вывода 2> /dev/null, а вместо этого спрашивал об ограничениях sed. Я был очень впечатлен способностями sed, поскольку он способен добавлять строки в файл, создавая у меня впечатление, что sed может делать все, что может, и даже больше.
Фолатт

11

sedимеет wкоманду, которая может делать то, что вам нужно:

w имя файла

Запишите текущее пространство шаблона в имя файла.

sed 'w file'сам по себе будет иметь тот же эффект, что и tee file. Если есть другие команды sed, поставьте wпоследнюю:

sed 's/This/That/;w file'

Тем не менее, это не будет зависеть от -n/--quiet/--silentопции. Это только подавляет контент, который в противном случае пошел бы в стандартный вывод.


0

Как правильно указал ankidaemon, мы можем сохранить вывод sed в файл. Я хотел бы добавить, что если мы выполняем какие-то операции с файлом, т. Е. Заменить, и хотели бы сохранить выходные данные в том же файле. Есть -iфлаг, в sedкотором возможно редактирование на месте. Это, однако, создает файл резервной копии в процессе. Если это не нужно, это можно сделать, просто передав пустое имя файла в -iфлаг.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.