I have a file with the following contents:
WORD1 WORD2 WORD3
How can I use sed to replace the string between WORD1 and WORD3 with foo
content of a sample file.txt
$ cat file.txt
WORD1 WORD2 WORD3
WORD4 WORD5 WORD6
WORD7 WORD8 WORD9
(Correction by @DennisWilliamson in comment)
$ sed -e 's/\([^ ]\+\) \+\([^ ]\+\) \+\(.*\)/\1 foo \3/' file.txt
WORD1 foo WORD3
WORD4 foo WORD6
WORD7 foo WORD9
while awk is somehow simpler
$ awk -F' ' '{ print $1" foo "$3 }' file.txt
WORD1 foo WORD3
WORD4 foo WORD6
WORD7 foo WORD9