[英]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.