在特定列上的数字和字母之间插入空格

在特定列上的数字和字母之间插入空格

如何在第5列数字和字母之间插入空格,错误代码应该是这样的: 554 RTR:BL 421 MFF:MT

Timestamp:    EmailTo:          EmailFrom:         IPAddress:      ErrorCodes:
2016-06-19  [email protected] [email protected]  16.23.29.141     554RTR:BL
2016-06-20  [email protected] [email protected] 13.43.219.141    421MFF:MT

答案1

假设第 5 列总共有 3 位数字,使用 GNUsed你可以这样做,

sed -r 's/([^\s]*\s){5}[0-9]{3}/& /' filename

样本:

$ sed -r 's/([^\s]*\s){5}[0-9]{3}/& /' filename

Timestamp:    EmailTo:          EmailFrom:         IPAddress:      ErrorCodes:
2016-06-19  [email protected] [email protected]  16.23.29.141     554 RTR:BL
2016-06-20  [email protected] [email protected] 13.43.219.141    421 MFF:MT

解释 :

  • 前五个字段由零个或多个字符描述,这些字符不是以空格分隔,[^\s]*后跟空格。

  • 错误代码由前 3 位数字后跟字母来描述。替换是&与后面添加的空格匹配的所有内容。

相关内容