|
发表于 2003-8-13 02:11:03
|
显示全部楼层
sed -e 's/\([a-z]*$\)/ &/' -e 's/\([^ ]*\) \([a-z]*\)/\2 \1/'
这里有两个转换步骤:
1. 转成中间用空格分隔的形式
本想直接匹配汉字和英文字符,再反转;试了试,不太好使,就曲折了一下。[a-z]*$ 匹配每行最后的所有英文字符,加上了引号表示把它作为一个“引用”来使用,这样,后面就可以用 & 来直接引述它了。
所以,'s/\([a-z]*$\)/ &/' 就是用空格+匹配到的字符来代替原来的“位于每行行尾的所有小写英文字符”。
2. 根据中间的空格做标志,把它前后的字符串位置对调
\([^ ]*\) 是匹配空格前面的所有字符,\([a-z]*\) 则匹配空格后面的小写英文字符。这里都用括号括了起来,这样后面就可以分别用 \1 和 \2 来引用他们的。把它们替换成 \2 \1 的形式自然就是对调了空格前后的字符。 |
|