使用 sed 交换两个单词

Cuc*_*res 7 linux ubuntu sed

我试图在一行中交换两个单词,但它不起作用。例如:“今天是我大学的第一天”应该是“我的今天是大学的第一天”

这是我尝试过的:

sed 's/\([a-zA-z0-9]\)\([a-zA-z0-9]\)\([a-zA-z0-9]\)/\3\2\1/' filename.txt
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

rus*_*ush 9

试试这个:

sed -r 's/([a-zA-Z0-9]+) ([a-zA-Z0-9]+) ([a-zA-Z0-9]+)/\3 \2 \1/'
Run Code Online (Sandbox Code Playgroud)

您的问题是您试图-r在 sed 命令中使用没有选项或转义符号的扩展正则表达式。

正则表达式也不完全正确。

您指定的范围不正确:没有A-z范围,有A-Z.

您也忘记了空格并且您没有指定单词是多字符的。