sed 및 awk를 사용한 후 파일의 처음 두 줄 손실을 방지하는 방법

sed 및 awk를 사용한 후 파일의 처음 두 줄 손실을 방지하는 방법

다음 스크립트가 있습니다.

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". 그런 다음 두 번째 "While" 이후에 파일보고서_v2.csv첫줄은 없어tmp.txt.

따라서 최종 파일에는 원본 파일보다 두 줄이 적습니다.

내 파일의 예는 다음과 같습니다.

보고서.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

마지막 파일에도 원본 파일의 처음 두 줄을 유지해야 합니다. 어떡해?

감사해요

답변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

관련 정보