Csv
如何在 CSV 文件中將單列拆分為多列
我在 csv 文件中有以下文本,需要將 FILE 和 TIMESTAMP 放入 csv 文件的單獨列中。您能否讓我知道如何實現這一目標。
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
注意:我嘗試過 column 命令,但沒有幫助。
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
告訴 shell 按原樣將字元串作為單個參數提供給 sed。- 對於 sed,
s
在第一個位置意味著替換:
是模式/替換分隔符,␣
是要匹配的模式\t
是模式替換——製表的轉義序列- g (global) 告訴 sed 替換該行的每個匹配項,而不僅僅是第一個匹配項。
如果您需要使用 sed 匹配更複雜的模式,可以使用
-E
開關,以便將模式解釋為正則表達式。如果您為每個表達式添加前綴,則可以連結多個 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