Csv

如何在 CSV 文件中將單列拆分為多列

  • July 17, 2018

我在 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

引用自:https://unix.stackexchange.com/questions/453699