いくつかの入力のすべての5番目のカンマを改行で置き換えるにはどうすればよいですか?例えばシェルスクリプト - 5つのカンマをすべて改行で置き換えます。
:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
が
sed
のようなものを使用してワンライナーをお探し
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
なり...
いくつかの入力のすべての5番目のカンマを改行で置き換えるにはどうすればよいですか?例えばシェルスクリプト - 5つのカンマをすべて改行で置き換えます。
:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
が
sed
のようなものを使用してワンライナーをお探し
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
なり...
これは動作するはずです:
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
$ 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
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>
受け入れソリューションは動作しますが、過度に複雑です。試してみてください:すべてのsedない
sed ':d s/,/\n/5; P; D; Td'
はコマンドがセミコロンで分離することができるように、あなたはそれぞれセミコロンの後にリテラルの改行が必要な場合があります。また、すべてのsedがラベルの後にコマンドを許可するかどうかはわかりません。したがって、sコマンドの前にリテラル改行が必要な場合があります。言い換えれば、
sed ':d
s/,/\n/5
P
D
Td'
これはOS X/Lionでは私にとってはうまくいかないことに注意してください。私は、OS Xでのキャリッジリターンを得るために他の場所に投稿されたソリューションを見て、彼らは私にとってライオンには役に立たなかった。 –
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 / –