AWK 두 번째 열을 음수 부호로 특정 행의 첫 번째 데이터로 바꿉니다.

AWK 두 번째 열을 음수 부호로 특정 행의 첫 번째 데이터로 바꿉니다.

첫 번째 열(예: 1.20E-05)의 첫 번째 데이터를 가져와 두 번째 열 전체를 음수 부호가 있는 첫 번째 데이터로 바꾸고 싶습니다. 그런 다음 마지막 데이터 행을 제거하고 새 파일로 인쇄하고 싶습니다.

나는 다음과 같은 데이터를 가지고 있습니다 :

body comments Vxx yy zz 0 pwl (

 1.20E-05 1
 1.21E-05 1.1
 1.22E-05 1.2
 1.23E-05 1.3
 1.24E-05 0 +)

예상 출력:

body comments Vxx yy zz 0 pwl (

 0.00E-05 1
 0.01E-05 1.1
 0.02E-05 1.2
 0.03E-05 1.3 +)

답변1

질문은 매우 명확하지 않습니다. 내가 이해한 바에 따르면, 이것이 당신에게 얼마나 도움이 될까요?

awk '
NR==1   {print
         next}
NR==2   {Subtrahend = $1
        }
        {if (Prev) print Prev
         $1   = sprintf("%.2g", $1-Subtrahend)
         Prev = $0
        }
END     {print $NF
        }' file
body comments Vxx yy zz 0 pwl (
0 1
1e-07 1.1
2e-07 1.2
3e-07 1.3
+)

머리글 행을 인쇄한 후 행 2에 필요한 빼기를 저장한 다음 모든 행의 첫 번째 필드에서 이를 뺍니다. Prev 변수를 사용하면 인쇄가 한 줄씩 연기되므로 마지막 줄( 제외 +))을 건너뛰거나 제거할 수 있습니다.

포맷은 또 다른 이야기입니다. 필요한 경우 약간의 노력/처리가 필요합니다.

관련 정보