다음과 같은 CLI 구문이 있습니다.
hdp-select | grep hadoop-client
hadoop-client - 2.6.4.0-91
최종 목표는 다음과 같은 숫자를 얻는 것입니다.
2640
마지막 숫자를 캡처하여 제거 -
및 제거합니다..
그래서 내가 그랬어
hdp-select | grep hadoop-client | awk '{print $3}' | sed s'/-/ /g' | awk '{print $1}' | sed s'/\.//g'
2640
그러나 이것은 추악한 해결책입니다
다른 우아한 솔루션을 알고 싶습니다.
답변1
sed와 함께
hdp-select | sed '/^hadoop-client - /!d;s///;s/-.*//;s/\.//g'
답변2
단일 최적화 솔루션awk
프로그램:
hdp-select | awk -F'-' '/^hadoop-client/{ gsub(/[[:space:].]+/, "", $3); print $3; exit }'
산출:
2640
답변3
Bash에서 이 작업을 쉽게 수행할 수 있습니다.
input='2.6.4.0-91'
input=${input%-*}
input=${input//./}
echo "$input"
2640
답변4
또 다른 하나는 sed
다른 것보다 훨씬 간단합니다(2개의 명령 대 3개의 명령).
hdp-select | sed -n 's/hadoop-client - \(.*\)-.*/\1/;s/\.//gp'