다음 필드가 포함된 텍스트 파일이 있습니다.
1; 3435; 45--XY
2; 3436; 15--XY
3; 3437; 23--XY
첫 번째 열의 숫자 부분을 마지막 열과 곱한 다음 출력 파일에 표시해야 합니다. 어떻게 해야 합니까? 제 생각에는앗가장 직접적인 순서가 될 것입니다.
시험을 마친:awk -F';' '{print substr($3,1,2)* $1}' input.txt > output.txt
답변1
단순한
awk '{print $1 * $3}' input.txt
명령이 작업을 수행합니다. 이 경우 필드에서 숫자를 추출할 필요가 없습니다.
이는 디지털 변환 메커니즘으로 인해 발생합니다 awk
.awk에서 문자열과 숫자를 변환하는 방법,지금 바로:
문자열의 숫자 접두사를 숫자로 해석하여 문자열을 숫자로 변환합니다. "2.5"는 2.5로 변환되고 "1e3"은 1,000으로 변환되며 "25fix"는 25로 변환됩니다. 유효 숫자가 0으로 변환되므로 해석할 수 없는 문자열입니다.
산출
45
30
69
답변2
앗해결책:
awk -F';' '{ gsub(/[^0-9]+/,"",$NF); print $1*$NF }' input.txt > output.txt
gsub(/[^0-9]+/,"",$NF)
[^0-9]+
-마지막 필드에서 숫자가 아닌 문자를 모두 제거합니다.$NF
콘텐츠 output.txt
:
45
30
69