파일을 필터링하고, 특정 문자열을 포함하는 줄의 값을 곱하고, 모든 줄을 반환합니다.

파일을 필터링하고, 특정 문자열을 포함하는 줄의 값을 곱하고, 모든 줄을 반환합니다.

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

관련 정보