sed 命令交换单词不起作用

sed 命令交换单词不起作用

我正在尝试使用 sed 交换每一行中的单词,如下所示:

sed 's/\([^ ]*\), \([^ ]*\)/\2, \1/' sed.txt

这是 sed.txt:

FIRST LAST
FIRST LAST
FIRST LAST
FIRST LAST

但它不起作用,我不知道为什么,我想要的结果是:

LAST FIRST
LAST FIRST
LAST FIRST
LAST FIRST

我知道这个例子微不足道,但我想更多地了解 sed,因为我只是用它来交换当前位置的单词而不改变位置。

答案1

sed 's/\([^ ]*\), \([^ ]*\)/\2, \1/' sed.txt

问题是第一个逗号,因为在源文本中没有它。更改:

sed 's/\([^ ]*\) \([^ ]*\)/\2, \1/' sed.txt

并且会起作用

相关内容