私はカンマで区切られたすべてのエントリを含む大規模なcsvファイルを扱っています。文書全体は、テキスト形式の通貨を反映するいくつかの列を除いて純粋に数字で構成されています。例えば、そのような項目の1つは同様に見え"$12,345.67"
、他の項目は同様に見える"$1,234,567.89"
(二重引用符記号も項目に含まれる)。以下は、完全なデータレコード(1行)の例です。
123,7,11,"$343,700.14","$34,928.63","$377,000.00","$15,421.92",19,2
このデータファイルに対していくつかの処理をしたいので、そのテキストフィールドを純粋な数字に再フォーマットしたいと思います(例:二重引用符やカンマを削除するなど)。正規表現のパターン置換が私にとって効果的だと思いますsed
が、正規表現がどのように見えるかはまったくわかりません。どんなアイデアでも大いに感謝します。
ベストアンサー1
何をすべきかを表現するのは簡単です。
"$
1との間に含まれる各文字列について"
すべて削除します。,
2周囲の"$
合計を削除します。"
これはsed表現です。コマンドラインで使用する場合は、適切に引用する必要があります。 command.sedと言うファイルに入れて、次のように呼び出す方が簡単です。
sed -f command.sed data.csv
以下は、この2つのステップを達成するプログラムです。
:repeat
s/"\$\([^,"]*\),/"$\1/g
t repeat
s/"\$\([^"]*\)"/\1/g
これ文書問題を解決するのに役立ちました。