같은 컬럼의 값을 비교하고 싶어요/
session-manager-0 3/5 1 >>> want to compare second column value 3 and 5 using awk.
session-manager-1 5/5 1
session-manager-2 5/5 1
답변1
split
예를 들어 두 번째 구분 기호를 기준으로 필드를 분할 할 수 있습니다 .
$ awk 'split($2,a,"/") > 1 && a[2] > a[1]+0' file
session-manager-0 3/5 1 >>> want to compare second column value 3 and 5 using awk.
split
적어도 2개의 값을 생성하는 경우 ;- 두 번째 분할 값이 첫 번째 분할 값보다 큽니다(강제 수치 비교 후).
- 그런 다음 기본
print
규칙을 적용합니다.
답변2
$ awk -F'[[:space:]/]+' '$2 < $3' file
session-manager-0 3/5 1 >>> want to compare second column value 3 and 5 using awk.
답변3
only를 사용하면 awk
여러 일치 항목을 관리해야 합니다(에서 수행할 수 있는 작업과 다소 유사).이 게시물).
내 순수한 awk
솔루션은 다음과 같습니다.
awk '{
match($0, /[0-9]+\/[0-9]+/); # match number/number pattern
pattern=substr($0,RSTART, RLENGTH); # store match in $pattern
match(pattern, /[0-9]+/); # match first number
num1=substr(pattern,RSTART,RLENGTH); # store it in $num1
sub(/[0-9]+\//,"",pattern); # remove 'number/' from $pattern
match(pattern, /[0-9]+/); # match second number
num2=substr(pattern,RSTART,RLENGTH); # store it in $num2
if ($num1 > $num2){ print num1, ">", num2 } # do your comparisons
else if ($num1 < $num2) { print num1, "<", num2 } # as you please
else { print num1, "=", num2 } # (this is just an example)
}' file
하지만, 이 경우 실제로 다음을 사용하여 sed
두 개의 숫자 값을 추출 합니다.awk
sed 's@^.*\([0-9]\+\)\/\([0-9]\+\).*$@\1 \2@' file |
awk '{if ($1 > $2){ print $1, ">", $2 }
else if ($1 < $2) { print $1, "<", $2 }
else { print $1, "=", $2 }}'