2012-04-01 11 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でのキャリッジリターンを得るために他の場所に投稿されたソリューションを見て、彼らは私にとってライオンには役に立たなかった。 –

+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/newlines-in-sed-on-mac / –

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ない

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

はコマンドがセミコロンで分離することができるように、あなたはそれぞれセミコロンの後にリテラルの改行が必要な場合があります。また、すべてのsedがラベルの後にコマンドを許可するかどうかはわかりません。したがって、sコマンドの前にリテラル改行が必要な場合があります。言い換えれば、

sed ':d 
s/,/\n/5 
P 
D 
Td' 
関連する問題