行ごとに生成されたレポートがあり、それを列に移動する必要があります。レコードあたりの行数は常に同じです。これはLinuxのbashスクリプトにあるので、利用可能な標準ツールを使用したいと思います。私はとをawk
好むsed
。
これを変更する必要があります。
R1
R2
R3
R4
R5
R6
R7
R1
R2
R3
R4
R5
R6
R7
これに関して:
R1,R2,R3,R4,R5,R6,R7
R1,R2,R3,R4,R5,R6,R7
どんな助けでも大変感謝します。
いくつかの人々が上記のデータに実際に適用されるいくつかの非常に良い例を私にお勧めしました。残念ながら、私のデータはもう少し信頼できます。以下は私が使っている準現実世界の例です。
これ:
00000
ND00000056888
Doe, Jane J
F
99 Y
09/01/2014 8:01:08 AM
EE
00001
ND00000056889
Doe, John J
M
66 Y
09/02/2014 5:01:08 PM
DD
到着する:
00000;ND00000056888;Doe, Jane J;F;99 Y;09/01/2014 8:01:08 AM;EE
00001;ND00000056889;Doe, John J;M;66 Y;09/02/2014 5:01:08 PM;DD
カンマまたは単一のスペースを除くすべての区切り文字が可能です。
答え1
努力する
awk '{printf "%s%s",$0,NR%7?",":"\n" ; }'
最も重要な部分
NR%7?",":"\n"
:if-then-else:- if(NR%7):NR、(レコード数)%(モジュロ)7(7で割った!= 0)
- 次にa','を印刷します。
- それ以外の場合は新しい行です。
$0
全体のラインです。
答え2
sedやawkに依存しない場合は、以下を使用してください。生地
echo "R1
R2
R3
R4
R5
R6
R7
R1
R2
R3
R4
R5
R6
R7" | paste -d, - - - - - - -
R1,R2,R3,R4,R5,R6,R7
R1,R2,R3,R4,R5,R6,R7
2番目の例は難なく動作します。シェルが見えないようにセミコロンを引用します。
paste -d ';' - - - - - - - <filename
00000;ND00000056888;Doe, Jane J;F;99 Y;09/01/2014 8:01:08 AM;EE
00001;ND00000056889;Doe, John J;M;66 Y;09/02/2014 5:01:08 PM;DD
答え3
awk '{ ORS=NR%7?",":"\n" }1'
awkのもう一つの方法です。
答え4
別の方法があります:
pr -a7 -l1 -s";"ファイル名
これは略語です
pr --columns=7 --across --length=1 --separator=";"ファイル名