在行首插入一个单词

Insert a word at beginning of line

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

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

输出应该是:

10 this is message1
20 this is message2

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

使用 sed:

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

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

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

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

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