将分隔符前的文本移动到行尾

时间:2013-10-18 14:00:00

标签: sed move delimiter

我的文件输出如下:

MIKE;123456
JOHN-HELPER;654321
SAM.SMITH;182364

我需要在分隔符之前的所有内容移动到行的末尾,所以它看起来像这样:

123456;MIKE
654321;JOHN-HELPER
182364;SAM.SMITH

挣扎着用sed ......任何想法来解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

像这样,例如:

$ sed -r 's/([^;]*);(.*)/\2;\1/' a
123456;MIKE
654321;JOHN-HELPER
182364;SAM.SMITH

它“抓住”了两组:;之前的所有内容,然后是其他组。下一步是反过来打印这些块:\2;\1

awk

$ awk -F";" '{print $2";"$1}' a
123456;MIKE
654321;JOHN-HELPER
182364;SAM.SMITH

它将;设置为字段分隔符,然后以相反的方式打印字段。