私の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:g
sedに単一の引数として文字列を与えるようにシェルに指示します。 - sedの場合、
s
最初の位置は交換を意味します。 :
パターン/代替区切り記号。,␣
似合うパターンです。\t
パターン置換です - テーブルのエスケープシーケンス- g(グローバル)は、sedに最初の行だけでなく、その行のすべての項目を置き換えるように指示します。
-E
sedを使用してより複雑なパターンを一致させる必要がある場合は、パターンが正規表現として解釈されるようにスイッチを使用できます。各式にプレフィックスを追加すると、複数の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