我有 100 個以下格式的檔案:
Jan 20 21:42:36 123UH9887934 [process name] text text text text
制表符分隔。
所有這些都在一個目錄中;每個檔案有很多條目;以相同的格式。
我想使用 bash 或 Powershell 甚至 Mac Automator 腳本將它們轉換為 Excel 格式。
匯入 Excel 只是將所有資料放入一個單元格中。并且是手動的。
問題是大多數腳本都假定逗號作為分隔符,因此它們將所有資料放入一個單元格中。
如果我在 Numbers 中一一打開檔案,它會理解制表符分隔符并正確格式化。它只需要永遠。
我嘗試過 Powershell:
Import-Csv "VQ18072500JPJ.csv" | Format-Table但不太清楚它希望我如何轉換并保存到新檔案。
我試過 Bash: for file in ./*.csv do ssconvert -O "separator=' ' $file ${file%.csv}.xls; done但它也不理解分隔符。
任何關于如何使用腳本轉換 100 個制表符分隔的 CSV 的想法都將不勝感激。
謝謝
uj5u.com熱心網友回復:
假設唯一的目標是將制表符轉換為逗號:
$ tr '\t' ',' < file.csv
Jan,20,21:42:36,123UH9887934,[process name],text,text,text,text
$ awk -v OFS=, '{$1=$1}1' file.csv
Jan,20,21:42:36,123UH9887934,[process,name],text,text,text,text
$ sed 's/\t/,/g' file.csv
Jan,20,21:42:36,123UH9887934,[process name],text,text,text,text
uj5u.com熱心網友回復:
當您的 csv 檔案以 line 開頭時SEP=x,Excel 將使用字符 x 作為欄位分隔符。將 x 替換為真正的 TAB。
for f in *.csv; do
sed -i '1s/^/SEP=\t\n/' "$f"
done
也許您可以將 PowerShell 與https://stackoverflow.com/a/21169406/3220113中給出的代碼一起使用 也許將一行更改為
$query.TextFileOtherDelimiter = "`t"
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/441514.html
上一篇:jq帶單引號bash腳本
