使用 sed 交换两个单词

使用 sed 交换两个单词

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

这是我尝试过的:

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

我究竟做错了什么?

答案1

试试这个:

sed -r 's/([a-zA-Z0-9]+) ([a-zA-Z0-9]+) ([a-zA-Z0-9]+)/\3 \2 \1/'

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

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

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

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

相关内容