gpt4 book ai didi

regex - 使用sed用逗号替换前两个空格

转载 作者:行者123 更新时间:2023-12-04 13:17:31 34 4
gpt4 key购买 nike

我有一个空格分隔的文件,每行上都有可变数量的条目。我想用逗号替换前两个空格,以创建具有三列的逗号分隔文件。

这是我的输入:

a b  1 2 3 3 2 1
c d 44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z y 2 3 33

这是我想要的输出:
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line,http://google.com,100 200 300
ef,jh,77 88 99
z,y,2 3 33

我正在尝试在sed命令中使用perl正则表达式,但无法完全正常工作。首先,我 try catch 一个单词,然后是一个空格,然后是另一个单词,但这仅适用于第1、2和5行:
$ cat test | sed -r 's/(\w)\s+(\w)\s+/\1,\2,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z,y,2 3 33

我还 try catch 空格,一个单词,然后捕获更多的空格,但这给了我相同的结果:
$ cat test | sed -r 's/\s+(\w)\s+/,\1,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh 77 88 99
z,y,2 3 33

我也尝试使用。?通配符,但这对第4行来说很有趣。
$ cat test | sed -r 's/\s+(.?)\s+/,\1,/'
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line http://google.com 100 200 300
ef jh,,77 88 99
z,y,2 3 33

任何帮助深表感谢!

最佳答案

这个怎么样:

sed -e 's/\s\+/,/' | sed -e 's/\s\+/,/'

单个sed命令可能是可行的,但这肯定是一种简单的方法:)

我的输出:
a,b,1 2 3 3 2 1
c,d,44 55 66 2355
line,http://google.com,100 200 300
ef,jh,77 88 99
z,y,2 3 33

关于regex - 使用sed用逗号替换前两个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6618705/

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