2016-06-24 3 views
1

カンマ区切りファイル(CSVファイル)test.csvを以下に示します。CSVファイルの2行目と3行目のみでカンマを削除

FHEAD,1,2,3,,,,,, 
FDEP,2,3,,,,,,,, 
FCLS,3,,,4-5,,,,,,, 
FDETL,4,5,6,7,8, 
FTAIL,5,67,,,,,, 

私はすなわち、私だけが空の列(,,)を削除したいそれらの行にFDEPFCLSで始まり、これまでの記録だっただけで、ファイルの2番目と3番目の行から空の列を削除したかったです。

空の列を削除した後に、同じファイル test.csvは、私はUnixの中でこれを行うことができますどのように

FHEAD,1,2,3,,,,,, 
FDEP,2,3 
FCLS,3,4-5 
FDETL,4,5,6,7,8, 
FTAIL,5,67,,,,,, 

のようになります?

+0

これに関するアップデートはありますか? – teepu

+1

うわー、あなたは怠惰です。あなたは何の努力もしなかった。ちょうど "私のためにこのコードを書いてください!"と "任意の更新?" – melpomene

答えて

1

はここでSEDを使用して、それを行うための一つの方法です:

sed '/^F\(DEP\|CLS\),/ { s/,\{2,\}/,/g; s/,$// }' 

我々は/^F\(DEP\|CLS\),/の範囲、すなわち、次のコマンド^F\(DEP\|CLS\),に一致する唯一のプロセスラインを使用します。この正規表現は、文字列の先頭に一致し、その後にF、その後にDEPまたはCLSのいずれかが続き、その後に,が続きます。つまり、FDEP,またはFCLS,で始まる行を探します。単一,によって行における2以上(\{2,\})コンマ(,)の

全てのラン(gフラグ、できるだけ多くの倍の一致)は、ライン、我々最初の代替(sコマンド)が見つかりました。これは,,,を単一の,まで絞る。

第2に、文字列の最後に,を何も置き換えません。これは末尾のカンマを取り除きます。

関連する問題