2017-02-11 13 views
0

私はLinuxには新しく、物事を理解しようとしています。ネット上にも同様の例がいくつかありますが、私はそれらを私のニーズに合わせて変更するのに十分な知識は持っていません(Sedは解釈が難しいです)。Bashの5文字ごとにcsv行を分割する方法は?

私の質問は、 その後、私が最初にやりたいことは、すべての第五番号の後に段落区切りを作成され

20,30,10,50,4,6,14,5,24,1.19,2,23,4000,12,56,43,1.2,78,334,77...etc. 

の最後の番号を削除します。私は以下のような単一行のテキスト(CSV)ファイルを(列数が50から150に変わる)、持っていますすべての新しい行
それはように見えます;

20,30,10,50 

6,14,5,24 

2,23,4000,12 

...etc 

これをBashでどのように処理できますか?

お返事ありがとうございます。

(月分を約1次のステップに言及し、私はこれに上記変換しようとします;。

somefixedtext,20,30,10,50,someotherfixedtext 

somefixedtext,6,14,5,24,someotherfixedtext 

somefixedtext,2,23,4000,12,someotherfixedtext 

...etc) 
+0

コード/データの前に4つの空白を付けます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

答えて

0

[OK]を、おかげで実際@Cyrusに、彼のソリューションは、私のために完全に働いた

sed -ri 's/([ \,]+[^ \,]*){1}$//' ${f} 
sed -ri 's/([^,]*,[^,]*,[^,]*,[^,]*),[^,]*,/\1\n/g' ${f} 
sed -i 's/.*/somefixedtext,&,someotherfixedtext/' ${f} 
+0

最後の行だけがこの質問に関連しています。パイプは間違っています: '-i'を使っているので、2番目のsedにパイプする出力はありません。これらの2つのコマンドを別々の行に置くだけです。 –

+0

あなたは正しいです、私はすでにそれを2つの行にしました。 –

0

また、このコマンドでそれを行うことができます:1

にラインに

最初の分割をし、sedのマージ5行10

cat yourFile | tr ',' '\n' | sed -e 'N;N;N;N;s/\n/,/g' 
+0

各行から最後の番号を削除したいことを忘れないでください。 –

関連する問題