2016-07-11 6 views
0

私はusers.csvファイル[Linux環境]で、以下に示す単一のレコードと同様のデータがあります(ラインラップ?)で、私はワードラップを削除することができますどのようにここで削除ワードラップ - Linuxの

"1583787721","tusharmisra","[email protected]","","","Ok 
","https://www.yammer.com/api/v1/users/1583787721","","","2016-005T11:20:08.942Z","","","","","","active" 

をCSVファイルはbashスクリプトを使用しています。 users.csvに少なくとも1000件のレコードがあります。

+0

をそれがフィールドの固定数をしていますか? – sat

+0

はい16フィールドあります。 – user3007361

+0

したがって、二重引用符で囲まれたフィールドに改行(時には)が含まれていて、改行がフィールドの最後の文字である場合は削除し、最後の文字でない場合は空白に置き換えるCSVレコードがあります現場で?あなたが期待される結果を示したら助けになります。私は、その例が非常に小さいとは思わない(MCVE(MCVE)ではない)。あなたは16の代わりに6つのフィールドを使って例を示すことができます。それは常に分割された同じフィールドですか、それともフィールドのいずれかになりますか? –

答えて

0

あなたは試すことができ、このawk

awk -F, 'NF!=16&&!line{line=$0;next} NF!=16&&line{line=line $0} {n=split(line, a, ",")} n==16{print line;line=""}' file.csv 
0
$ gsed '/,"[^"][^"]*$/{N;s/\n//}' data.in >data.new 

このGNU sedスクリプトは、ファイルdata.inから読み取られ、XXX"文字を含まない任意の文字列を使用できます,"XXX、で終わる任意の行を検索します。これは、ラップされた行(指定したサンプル内)を示します。

このような行が見つかると、入力の次の行が追加され、連結された行の改行が削除されます。

改行されていない行も出力されます。

出力はdata.newに格納されます。あなたはこのawkを使用できるフィールドの固定#に基づいて

0

awk -F '"[^"]+"' 'NF<15{s = s $0; next} s{print s; s=""} 1; END{if (s) print s}' file 
関連する問題