> can do it.
echo "text" > file
tee can do it.
echo "test" | tee file
sed do it without using either of the above? Is it possible to save the output of a
sed command to a file without using either
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
tee and > can be used for data redirection because these are meant to be used for data redirection in linux.
sed on the other hand is a stream editor. sed is not meant for data redirection as tee and > meant to be. However you can use conjunction of commands to do that.
use tee or > with sed
sed 's/Hello/Hi/g' file-name | tee file
sed 's/Hello/Hi/g' file-name > file
use sed with -i option
sed -i 's/Hello/Hi/g' file-name
the last one does not redirect, instead it will make changes in the file itself.
sed has the
w command that might do what you require:
Write the current pattern space to filename.
sed 'w file' on its own will have the same effect as
tee file. If there are other sed commands, put the
sed 's/This/That/;w file'
However, this won't be affected by the
-n/--quiet/--silent option. That only suppresses the content that would otherwise have gone to standard output.
As ankidaemon correctly pointed out how we can save sed output to a file. I would like to add that if we are performing some operations on a file i.e replace and would like to save the output to the same file. There is a
-i flag in
sed which makes inplace edits possible. This however creates a backup file in the process if a suffix is provided as argument. If that's not needed, that can be done by just passing empty filename or nothing to
sed -i "s/from/to/" file is inplace changing the