フィールドに区切り文字が含まれている場合に列を区切る方法

フィールドに区切り文字が含まれている場合に列を区切る方法

24のフィールドを持つCSVファイルがあります。レコードは以下の例のようになります。したがって、一部のフィールドには値に「,」があります。区切り文字の使い方は?

列9で200を超える値を見つけようとしています。ただし、区切り文字の問題により、最初の数列のテキストが表示されます。

"86680728811_10150499874478812","86680728811","fun ,celebrators.","New York City’s buildings, descend on Times Square when the iconic ball drops tomorrow...","abcnews.go.com","link","published_story","271","31","0","0","0","0","0","0","0","http://abcnews.go.com/blogs/headlines/2011/12/wishes-for-2012-to-fall-on-times-square/","https://external.xx.fbcdn.net/safe_image.php?d=AQAbTSWm1WlXInTf&w=130&h=130","2012-01-01 02:00:37"

この問題をどのように解決できますか?

ベストアンサー1

CSVを解析する方法を知るツールを使用できます。ミラーを例に挙げましょう。

mlr -N --csv filter '$9 > 200' < your-file

GNUを使用すると、フィールドを区切る区切り文字の代わりに一致するパターンに基づいて定義されるようにフィールドをawk設定できます。FPAT

gawk -v 'FPAT=[^",]*|"([^"]|"")*"' 'substr($9,2) > 200'

ここでもエスケープは処理されますが、"フィールド""値に改行が含まれず、9番目のフィールド常に引用符で囲まれているとします。

おすすめ記事