通过“sed”将破折号插入字符串

问题描述 投票:0回答:2

我有包含数字的 14 个字符行。如何在特定位置(即第 4 个位置)插入一个字符?

所以,如果我有这样的字符串

xxxxxxxxxxxxxx

如何将其更改为这样的

xxxx-xx-xxxxxxxx 

x 代表数字?

谢谢! 哎呀

sed insert character line digits
2个回答
7
投票

如果您的行包含数字,您可以将前四个字符分组为一组:

\(....\)

以及另一组中的以下两个:

\(....\)\(..\)

然后,您只需将其替换为对第一组的反向引用 (

\1
)、破折号、对第二组的反向引用 (
\2
) 和另一个破折号:

\1-\2-

结果:

$ echo 12345678900000 | sed 's/\(....\)\(..\)/\1-\2-/'
1234-56-78900000

3
投票

感谢brandizzi的回答,它帮助我使用稍微不同的方法让我的答案工作

sed 's/^\(.\{4\}\)\(.\{2\}\)/\1-\2-/' 

4 和 2 用于替换第 4 个字符,然后用破折号替换第 2 个字符。

所以 xxxxxxxx 变成 xxxx-xx-xx

© www.soinside.com 2019 - 2024. All rights reserved.