正しい形式で複数行を1つにマージ

正しい形式で複数行を1つにマージ

次のデータを含むFILE1.txtというファイルがあります。

A
B
C
D
E
F
G
H
I
J
K
L

FILE2などの他のファイルからの出力が必要です。

'A', 'B', 'C', 'D', 'E',
'F', 'G', 'H', 'I', 'J',
'K', 'L'

注: - 新しい行は、カンマ付きの最後の文字以降ではなく、5文字ごとに開始する必要があります。

答え1

xargs printf "'%s', '%s', '%s', '%s', '%s',\n" <in >out

...最後の文字の後にカンマが追加されますが。実際には、最大4つの末尾の空のフィールドと最後のコンマを実行します。

sed  -e:n -e'$!N;s/\n/&/4;to' -e$\!bn <in >out \
     -e:o -e"s//', '/g;s/.*/'&',/;$"s/,$//

^本当はそうではありません。

答え2

perl -p0e 's/.+/"$&",/g; s/,\n$//; s/\n/++$i%5?" ":"\n"/ge'

関連情報