awk 출력 및 문자열 조작

awk 출력 및 문자열 조작

다음 출력에 대한 행이 필요합니다.

STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
echo $STRING | awk '{print $8}'
v3.2.5.90,

원하는 출력은

v3.2.5.90

그래서 마지막에 쉼표를 제거해야 합니다. 다시 sed로 파이프할 수 있지만 이는 "단일 명령" 솔루션이 있어야 함을 의미합니다.

미리 감사드립니다

답변1

이것은 Ubuntu의 grep -version 2.25에서 작동합니다.

grep -oP '(?<=, test).*(?=,)' <<< "SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.7.32.a, test"

답변2

일반 bash(또는 POSIX/standard sh) 문자열 도구를 사용해 보세요.

STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
OUTPUT=${STRING%,*}
printf '%s\n' "${OUTPUT##* }"

답변3

이 시도:

echo $STRING | awk -F', | ' '{print $8}'

나를 위해 작동합니다.

답변4

항상 버전 번호(v로 시작)를 캡처하려면 다음을 시도하십시오.

echo ${STR} | awk '$0~/^v/' RS=", "

관련 정보