如果我有一个字符串并且我想使用sed
以便在前8个字符之后插入冒号,然后在其后的每2个字符之后插入冒号,那么sed
模式会是什么样子更换模式会是什么样的?
答案 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'
您可以将m
和n
更改为所需的值(错误处理未在我的单行中完成)。如果我们做一个测试:
$ 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>