次のスクリプトがあります。
file="home/report.csv"
while IFS= read -r line
do
sed 's/\,/;/' > tmp.txt
done <"$file"
file2="home/tmp.txt"
while IFS= read -r line
do
awk -F. '{print $1";service" > "report_v2.csv"}' OFS=;
done <"$file2"
最初の「While」以降のファイル」tmp.txt「最初の行はありません」レポート.csv". その後、2番目の"While"の後にファイルレポート_v2.csv最初の行はありません。tmp.txt。
したがって、最終ファイルは元のファイルよりも2行少なくなります。
私のファイルの例は次のとおりです。
レポート.csv
1,foo
2,pippo
3,pluto
4,davis
tmp.txt
2;pippo
3;pluto
4;davis
レポート_v2.csv
3;pluto;service
4;davis;service
最後のファイルでも、元のファイルの最初の2行を保持する必要があります。どうですか?
ありがとう
答え1
Erasmoサイトへようこそ。良い取引を簡素化できます。
#!/bin/bash
file="report.csv"
sed 's/\,/;/g' "$file" > tmp.txt
file2="tmp.txt"
awk '{print $1";service"}' "$file2" > report_v2.csv
収量が必要ですtmp.txt
。
1;foo
2;pippo
3;pluto
4;davis
そしてreport_v2.csv
以下を計算する必要があります:
1;foo;service
2;pippo;service
3;pluto;service
4;davis;service
答え2
次のコマンドを使用すると、目的の結果が得られます。
awk '{gsub(",",";",$0);print $0";service"}' report.csv >> report_v2.csv
出力
1;foo;service
2;pippo;service
3;pluto;service
4;davis;service