gpt4 book ai didi

linux - 替换文本文件中每一行的前六个逗号

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:11 25 4
gpt4 key购买 nike

我想使用 sed 或 linux 中的类似工具替换文本文件中每一行的前六个 ,

每行有六个以上的,,但只有前六个应该用|代替。

最佳答案

Sed 并不真正支持“第 n 次出现”的概念,仅支持“第 n 次出现”; GNU sed 有一个用于“替换第 n 开始的所有匹配项”,在这种情况下这不是您想要的。要替换前六个逗号,您必须调用 s 命令六次:

sed 's/,/|/;s/,/|/;s/,/|/;s/,/|/;s/,/|/;s/,/|/' infile

但是,如果您知道文件中没有 | 并且您有 GNU sed,则可以这样做:

sed 's/,/|/g;s/|/,/7g' infile

这会将 所有 逗号替换为管道,然后将管道从第 7 个开始变回逗号。

如果您确实事先有管道,您可以先将它们变成您知道不在字符串中的东西:

sed 's/|/~~/g;s/,/|/g;s/|/,/7g;s/~~/|/g' infile

这使得所有的|首先进入~~,然后所有的进入|,然后是|从7号开始回到,最后~~回到|

测试这个输入文件:

,,,,,,X,,,,,,
,,,|,,,|,,,|,,,|

第一个和第三个命令结果为

||||||X,,,,,,
||||||||,,,|,,,|

第二个将在第二行失败,因为已经有管道字符。

关于linux - 替换文本文件中每一行的前六个逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419555/

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