아래와 같은 텍스트 파일이 있습니다. 열 2와 4의 값을 빼고 출력에 새 열을 만들어야합니다.awk 또는 bash를 사용하여 두 열의 값을 뺍니다.
co1 co2 co3 co4
r1 15.2 13.0 21.4
r2 23 15 15.7
r3 14 8 12
원하는 출력
co1 co2 co3 co4 diff.
r1 15.2 13.0 21.4 -6.2
r2 23 15 15.7 7.3
r3 14 8 12 2
아래와 같은 텍스트 파일이 있습니다. 열 2와 4의 값을 빼고 출력에 새 열을 만들어야합니다.awk 또는 bash를 사용하여 두 열의 값을 뺍니다.
co1 co2 co3 co4
r1 15.2 13.0 21.4
r2 23 15 15.7
r3 14 8 12
원하는 출력
co1 co2 co3 co4 diff.
r1 15.2 13.0 21.4 -6.2
r2 23 15 15.7 7.3
r3 14 8 12 2
주 : AWK 모두 한 줄에 명령을 넣을 수 있지만,이 정돈 (플러스 더 투명하고 필요하다면 수정하기 쉬운)입니다.
이 so.awk
스크립트
NR==1{print $0, " diff.\n"}
NR>2{printf("%s\t%5.1f\n", $0, $2-$4)}
을 제공합니다
co1 co2 co3 co4 diff.
r1 15.2 13.0 21.4 -6.2
r2 23 15 15.7 7.3
r3 14 8 12 2.0
파일 data.txt
문제에 데이터를 감안할 때이 명령을
awk -f so.awk data.txt
가 (당신이 서식을 조정해야 할 수도 있습니다를 당신의 정확한 필요에 맞게)
이 한 줄의 작품 :
awk 'NR == 1 { $5 = "diff." } NR >= 3 { $5 = $2 - $4 } 1' <input.txt
그것은 제공 :
co1 co2 co3 co4 diff.
r1 15.2 13.0 21.4 -6.2
r2 23 15 15.7 7.3
r3 14 8 12 2
당신이 탭으로 필드를 구분하려면이 와트입니다 당신이 원하는 :
awk 'BEGIN { OFS = "\t" } NR == 1 { $5 = "diff." } NR >= 3 { $5 = $2 - $4 } 1' <input.txt
한 Taku Miyakawa의 머리 글자가 없으면 단순화 할 수 있습니다.
또는 탭 분리와가 :
awk 'BEGIN { OFS = "\t" } { $5 = $2 - $4 } 1' input.txt > inputdiff.txt
user1606717 @ 내 업데이트 된 대답을 참조하십시오. – Levon