在行

时间:2015-04-23 12:10:20

标签: shell awk sed grep

this is message1;num:10;
this is message2;num:20;

我想搜索num:;之间的值,即1020,并将其插入到行的开头。

输出应该是:

10 this is message1
20 this is message2

如何使用shell脚本执行此操作?

2 个答案:

答案 0 :(得分:4)

$ awk -F'[;:]' '{print $3, $1}' file
10 this is message1
20 this is message2

答案 1 :(得分:1)

使用sed:

sed -e 's/\(.*\);num:\([^;]\+\);/\2 \1/'

如果你的sed实现支持扩展的正则表达式,你可以使它更具可读性:

sed -re 's/(.*);num:([^;]+);/\2 \1/'

第一对括号记住该消息,第二对括号记住该号码。然后该行以相反的顺序被两个记住的字符串替换。