gpt4 book ai didi

regex - 在文本的特定位置插入 ","

转载 作者:行者123 更新时间:2023-12-03 17:44:16 25 4
gpt4 key购买 nike

(我输入了我执行的确切文本和命令,所以看起来有点乱。)
我有一个 .TXT 文件看起来像

11111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111
我正在寻找的结果会像
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,111,111
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,111,111
我试过的命令是
sed -i 's/\(.\{14\}\)\(.\{7\}\)\(.\{2\}\)\(.\{1\}\)\(.\{3\}\)\(.\{13\}\)\(.\{1\}\)\(.\{8\}\)\(.\{16\}\)\(.\{3\}\)/\1,\2,\3,\4,\5,\6,\7,\8,\9,\10,/' SOME.TXT
我得到的结果是
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,1111111111111110,111
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,1111111111111110,111
我真的不知道为什么这些 0 突然出现并且“,”没有出现在我命令的位置,即使它工作了一半。
这是错误还是 sed 命令中的某些内容?

最佳答案

正在打印0在输出中,因为 sed捕获组及其反向引用最多只能有 9 个和 \10被解释为 \1后跟文字 0 .
您可以使用 FIELDWIDTHS feature of gnu-awk 轻松解决它:

awk -v OFS=, 'BEGIN { FIELDWIDTHS = "14 7 2 1 3 13 1 8 16 3 *" } {$1 = $1} 1' file
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,111,111
11111111111111,1111111,11,1,111,1111111111111,1,11111111,1111111111111111,111,111

仅用于学术练习,这是一个有效的 sed使用 2 个替换来解决这个问题:
sed -E 's/(.{14})(.{7})(.{2})(.)(.{3})(.{13})(.)(.{8})(.+)/\1,\2,\3,\4,\5,\6,\7,\8,\9/; s/(.+,.{16})(.{3})(.*)/\1,\2,\3/' file

关于regex - 在文本的特定位置插入 ",",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63355940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com