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番目のフィールドが常に引用符で囲まれているとします。