0

.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 でこの結果を得る方法はありますか?

4

3 に答える 3

10

フィールドに面白いビジネスが含まれていない場合、これでうまくいくはずです。

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

bash で文字通りタブを入力するだけです (^V TAB)。お使いの sed のバージョンでサポートされている場合\tは、リテラル タブの代わりに書き込むことができます。

于 2013-06-07T15:20:16.293 に答える
2

awk を使用できます:

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

これ{$1=$1}1は、新しいフィールド区切りを強制するためのトリックです。

echoを使用すると-e、タブ文字がタブとして解釈されます。

編集:変更されたパイプ| へ & そして へ ;

于 2013-06-07T15:30:51.667 に答える
1

これは純粋な bash ソリューションです。ヘッダーを配列に格納し、次にヘッダーに設定IFSします。read を使用してファイルをループし、途中でに設定し、途中で設定 して実行します。tabechoIFS;IFStabecho

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
于 2013-06-07T15:33:45.210 に答える