I need to use the output of a command as a search pattern in sed. I will make an example using echo, but assume that can be a more complicated command:
echo
This might work for you (GNU sed):
echo "some pattern" | sed 's|.*|s/&/replacement/g|' | sed -f - -i file.txt
Essentially turn the some pattern
into a sed substitution command and feed it via a pipe to another sed invocation. The last sed invocation uses the -f
switch which accepts the sed commands via a file, the file in this case being the standard input -
.
If you are using bash, the here-string
can be employed:
<<<"some pattern" sed 's|.*|s/&/replacement/g|' | sed -f - -i file.txt
N.B. the sed separators |
and /
should not be a part of some pattern
otherwise the regexp will not be formed properly.