.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获得这个结果?
答案 0 :(得分:10)
这应该这样做,如果您的字段不包含任何有趣的业务:
(echo "Date;Visit;Login;Euro;Rate" ; cat file.txt) | sed 's/;/<tab>/g' > file.csv
你只需要在bash中按字面输入一个标签(^ V TAB)。如果你的sed版本支持它,你可以写\t
而不是文字标签。
答案 1 :(得分:2)
您可以使用awk:
echo -e "Data\tVisit\tLogin\tEuro\tRate" > newfile; awk -F';' ' {$1=$1}1' OFS="\t" file >> newfile
{$1=$1}1
是强制新字段分隔符的技巧。
echo
的 -e
强制将标签字符解释为标签。
编辑:更改管道|到&amp;然后到;
答案 2 :(得分:1)
这是一个纯粹的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