grep을 사용하여 파일을 필터링하고, 필터링된 행의 특정 열에 대해 수학 연산을 수행하고, 첫 번째 grep 필터의 모든 행과 수학 연산이 완료된 행을 반환합니다("value=" 문자열이 포함된 행에서만 반환).
예:
grep을 사용하여 "update" 문자열이 포함된 행을 필터링하면 쉽습니다. 알겠습니다.
산출:
... 열 1 열 2고쳐 쓰다 4열 5열 열 1 열 2고쳐 쓰다 값 = 320 열 1 열 2고쳐 쓰다 4열 5열 열 1 열 2고쳐 쓰다 값 = 210 ...
이제 "value=" 문자열이 포함된 행을 선택하고 다음 열에 25를 곱하면 됩니다. 하지만 여전히 "value=" 문자열이 포함되지 않은 행이 표시됩니다.
산출:
... col1 col2 업데이트 col4 col5 col1 col2 업데이트 값 = 8000 col1 col2 업데이트 col4 col5 col1 col2 업데이트 값 = 5250 ...
if 문과 awk를 사용해 보았지만 수학이 완료된 행만 반환됩니다.
답변1
awk
수학 연산을 수행하려면 sed 이상을 사용해야 합니다 (sed 및 grep은 수학 연산을 수행할 수 없습니다).
awk에서 grep을 바꾸는 것은 정규식을 사용하는 것만큼 간단합니다 /update/
.
awk '/update/ { if ($4=="value=") { $5*=25 }; print }' ./file
답변2
이해합니다:
awk '$4=="value=" {$5=($5*25)}1' foo