Sed - 如何在一行中切换两个单词

时间:2017-04-11 08:03:32

标签: linux bash shell sed

我正在尝试编写一个shell脚本来切换一行中的第一个和第三个单词。在这种情况下,只有包含字母(大写和小写)的字符串计为单词,其他所有字符串(数字,标点符号,空格)都被视为空格。 例如:

abc123def. ghi...jkl

会变成:

ghi123def. abc...jkl

我尝试了以下操作,但它不起作用:

sed 's/\([a-zA-Z][a-zA-Z]*\)[^A-Z^a-z]\([a-zA-Z][a-zA-Z]*\)[^A-Z^a-z]\([a-zA-Z][a-zA-Z]*\)/\3 \2 \1/' input.txt

1 个答案:

答案 0 :(得分:2)

使用sed

$ echo "abc123def. ghi...jkl" | sed -r 's/([A-Za-z]*)([^A-Za-z]*[A-Za-z]*[^A-Za-z]*)([A-Za-z]*)(.*)/\3\2\1\4/g'
$ ghi123def. abc...jkl