sed模式在前m个字符后插入一个字符,然后在每n个字符后插入一个字符

时间:2017-08-28 13:54:29

标签: sed

如果我有一个字符串并且我想使用sed以便在前8个字符之后插入冒号,然后在其后的每2个字符之后插入冒号,那么sed模式会是什么样子更换模式会是什么样的?

2 个答案:

答案 0 :(得分:1)

awk具有substr()功能,它可以解决您的问题:

awk -v m="8" -v n="2" 
'{a=substr($0,1,m);
  b=substr($0,m+1);
  gsub(".{"n"}","&:",b)}$0=a":"b'

您可以将mn更改为所需的值(错误处理未在我的单行中完成)。如果我们做一个测试:

$ awk -v m="8" -v n="2" '{a=substr($0,1,m);b=substr($0,m+1);gsub(".{"n"}","&:",b)}$0=a":"b'<<<"aaaaaaaaaaaaaaa"
aaaaaaaa:aa:aa:aa:a

答案 1 :(得分:1)

这可能适合你(GNU sed):

sed 's/../&:/4g' file

在第4次出现2个字符后插入:,然后在整个行中全局插入。{/ p>