awk를 사용하여 CSV 열의 값을 수정하고 변수를 사용합니다.

awk를 사용하여 CSV 열의 값을 수정하고 변수를 사용합니다.

여러 숫자 값 열로 구성된 CSV 파일이 있습니다. 세 번째 열을 abs($3-1)세 번째 열에 있는 숫자의 절대값에서 1을 뺀 값인 으로 바꾸고 싶습니다 .

다음 명령을 사용해 보았습니다.

awk '{d=($3>1)?($3-1):(-$3+1); print $1 " " $2 " " $d}' file.csv

변수가 d올바른 값을 저장하기를 바랍니다. 그러나 내가 얻은 결과는 완전히 잘못되었습니다. 내가 여기서 뭘 잘못하고 있는 걸까? 죄송합니다. 이제 막 시작했습니다 awk.

답변1

코드에서는 $d:th 필드의 값입니다. d변수의 값이 d기록됩니다 d.

추가 변수를 사용하지 않고 코드를 단순화할 수 있습니다.

$3 = $3 > 1 ? $3 - 1 : 1 - $3
print

또는,

$3 -= 1; if ($3 < 0) $3 = -$3
print

... OFS올바른 구분 기호 값을 가정합니다. print인수 없이 사용하면 현재 레코드가 출력됩니다.

관련 정보