첫 번째 열(예: 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 변수를 사용하면 인쇄가 한 줄씩 연기되므로 마지막 줄( 제외 +)
)을 건너뛰거나 제거할 수 있습니다.
포맷은 또 다른 이야기입니다. 필요한 경우 약간의 노력/처리가 필요합니다.