簡體   English   中英

將 .txt 文件轉換為帶有 bash 標題的 .csv

[英]Convert .txt file to .csv with header in bash

.txt 看起來像:

2013-04-10;248179;5431;5375.30€;1.49
..
..
..

我需要一個帶有標題的 .csv 文件:

Date       Visit   Login  Euro      Rate
2013-04-10 248179  5431   5375.30€  1.49
..         ..      ..     ..        ..
..         ..      ..     ..        ..

有沒有辦法用 BASH 得到這個結果?

如果您的字段不包含任何有趣的業務,應該這樣做:

(echo "Date;Visit;Login;Euro;Rate" ; cat file.txt) | sed 's/;/<tab>/g' > file.csv

您只需要在 bash (^V TAB) 中逐字鍵入一個選項卡。 如果您的 sed 版本支持它,您可以編寫\\t而不是文字制表符。

您可以使用 awk :

echo -e "Data\tVisit\tLogin\tEuro\tRate" > newfile; awk -F';' ' {$1=$1}1' OFS="\t" file >> newfile

{$1=$1}1是強制使用新字段分隔符的技巧。

帶有-e echo強制將制表符解釋為制表符。

編輯:改變管道 | 到 & 然后到 ;

這是一個純 bash 解決方案。將標頭存儲在一個數組中並將IFS設置為tab ,然后echo顯標頭。 使用 read 循環遍歷文件,將IFS設置為; 在進入的途中,將IFS設置為tab並在退出時運行echo

headers=(Date       Visit   Login  Euro      Rate)
((IFS=$'\t'; echo "${headers[*]}"); 
while IFS=';' read -r -a arr; do
(IFS=$'\t'; echo "${arr[*]}";)
done < test.fil) > test.csv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM