2012-04-01 75 views

回答

5

這應該工作:

sed 's/\(\([^,]*,\)\{4\}[^,]*\),/\1\n/g' 

防爆充足的:

$ echo "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" | 
> sed 's/\(\([^,]*,\)\{4\}[^,]*\),/\1\n/g' 
1,2,3,4,5 
6,7,8,9,10 
11,12,13,14,15 
+0

請注意,這在OS X/Lion上不適用於我。我查看了其他地方發佈的用於獲得OS X回車的解決方案,並且他們在Lion上不適合我。 – 2012-04-02 05:00:35

+1

BSD sed與GNU sed有點不同。試試這個,它可以用於兩種變體(我在Lion和Slackware上測試過):'echo「1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15「| sed -e's/\(\([^,] *,\)\ {4 \} [^,] * \),/ \ 1 \'$'\ n/g'' - https:// cafenate .wordpress.com/2010/12/05 /換行符合的sed-ON-MAC / – 2012-04-02 14:10:10

1
$ echo -n 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 | xargs -d, printf '%d,%d,%d,%d,%d\n' 
1,2,3,4,5 
6,7,8,9,10 
11,12,13,14,15 
0
nawk -F, '{for(i=1;i<=NF;i++){printf("%s%s",$i,i%5?",":"\n")}}' file3 

測試:

pearl.246> nawk -F, '{for(i=1;i<=NF;i++){printf("%s%s",$i,i%5?",":"\n")}}' file3 
1,2,3,4,5 
6,7,8,9,10 
11,12,13,14,15 
pearl.247> 
1

接受的解決方案的工作原理,但過於複雜。嘗試:

sed ':d s/,/\n/5; P; D; Td' 

並非所有的sed允許命令用分號隔開,所以你可能每個分號後需要字面換行符。另外,我不確定所有的sed都允許一個標籤後跟一個命令,所以在s命令之前可能需要一個字面換行符。換句話說:

sed ':d 
s/,/\n/5 
P 
D 
Td'