exchange two words using sed
9,898
Try this one:
sed -r 's/([a-zA-Z0-9]+) ([a-zA-Z0-9]+) ([a-zA-Z0-9]+)/\3 \2 \1/'
Your problem is that you're tryng to use extended regex without -r
option or escape symbol in sed command.
Also the regex isn't fully correct.
You're specifying incorrect range: there is no A-z
range, there is A-Z
.
Also you forgot spaces and you didn't specify that words are multicharacter.
Related videos on Youtube
Author by
Cucerzan Rares
Updated on September 18, 2022Comments
-
Cucerzan Rares over 1 year
I am trying to exchange two words in a line but it doesn't work. For example: "Today is my first day of university" should be "my is Today first day of university"
This is what I tried:
sed 's/\([a-zA-z0-9]\)\([a-zA-z0-9]\)\([a-zA-z0-9]\)/\3\2\1/' filename.txt
What am I doing wrong?
-
rush about 11 years@warl0ck, I'm not sure we should add backslashes into sed command or fix it any other way directly in the question.
-
Runium about 11 yearsWhy do people keep changing the Q here? The OP has erroneous pattern as @rush points out in answer. This makes answer look out of place - and is no help for poster.
-
Runium about 11 yearsAha. The back-slashes was there, but disappear when not as code block. Thanks @rush for Q on this. Original post plain text.
-