다음 출력에 대한 행이 필요합니다.
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=", "