CSVファイルの単一列を複数の列に分割する方法

CSVファイルの単一列を複数の列に分割する方法

私のcsvファイルには次のテキストがあり、csvファイルの別々の列にFILEとTIMESTAMPを入れる必要があります。これを達成する方法を教えてください。

FILE, TIMESTAMP
/u01/app/xxcus/12.0.0/mds/cvs/oracle/apps/xxcus/receipt/server/XxReceipt.java, Thu 28 Jun 2018 02:49:45 AM EDT
/u01/app/xxcus/12.0.0/mds/cvs/oracle/apps/xxcus/receipt/webui/XxReceiptCreateCO.java, Thu 28 Jun 2018 09:00:43 AM EDT
/u01/app/xxcus/12.0.0/mds/cvs/oracle/apps/xxcus/receipt/webui/XxOlympusReceiptPG.xml, Thu 28 Jun 2018 05:16:46 AM EDT
/u01/app/xxcus/12.0.0/reports/US/XX_POXRCPPV.rdf, Thu 28 Jun 2018 12:31:29 PM EDT
/u01/app/xxcus/12.0.0/reports/US/XX_POXRCIPS.rdf, Thu 28 Jun 2018 12:31:40 PM EDT

注:listコマンドを試しましたが、役に立ちませんでした。

ベストアンサー1

sed道路

,␣カンマスペース()をファイル内のテーブルに置き換えるには、sedを介してその内容をパイプします。これは例です

$ echo '/apps/XxReceipt.java, Thu 28 Jun 2018 02:49:45 AM EDT' | sed 's:, :\t:g'
/apps/XxReceipt.java    Thu 28 Jun 2018 02:49:45 AM EDT

説明する:

  • 周囲の一重引用符は、s:, :\t:gsedに単一の引数として文字列を与えるようにシェルに指示します。
  • sedの場合、s最初の位置は交換を意味します。
  • :パターン/代替区切り記号。
  • ,␣似合うパターンです。
  • \tパターン置換です - テーブルのエスケープシーケンス
  • g(グローバル)は、sedに最初の行だけでなく、その行のすべての項目を置き換えるように指示します。

-Esedを使用してより複雑なパターンを一致させる必要がある場合は、パターンが正規表現として解釈されるようにスイッチを使用できます。各式にプレフィックスを追加すると、複数のsed式を連結できます-e

csvデータがファイルにある場合、sedを介してパイプする方法は次のとおりです。

cat my-data.csv | sed 's:, :\t:g' | tee my-data.tsv

または

cat my-data.csv | sed 's:, :\t:g' > my-data.tsv

おすすめ記事