변수 (내 경우에는 개발 키트 버전) 를 구문 분석하여 dot ( .
)을 무료 로 만들고 싶습니다 . 인 경우 version='2.3.3'
원하는 출력은 233
입니다.
나는 아래와 같이 시도했지만 그것을 .
주는 다른 캐릭터로 교체 해야 합니다 2_3_3
. 경우 잘했을 것이다 tr . ''
일 것이다.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
답변
외부 프로그램을 실행할 필요가 없습니다. bash
의 문자열 조작 은 그것을 처리 할 수 있습니다 ksh
((그리고 어디에서 왔는지) 및 zsh
).
$ VERSION='2.3.3'
$ echo "${VERSION//.}"
233
해당 쉘 매뉴얼에서 매개 변수 확장 섹션에서이를 찾을 수 있습니다.
답변
연대순으로 :
tr / sed
echo "$VERSION" | tr -d .
echo "$VERSION" | sed 's/\.//g'
csh / tcsh
echo $VERSION:as/.//
POSIX 쉘 :
set -f
IFS=.
set -- $VERSION
IFS=
echo "$*"
ksh / zsh / bash / yash (및 ash
내장 된 경우 busybox ASH_BASH_COMPAT
)
echo "${VERSION//.}"
zsh
echo $VERSION:gs/./
답변
성공적인 답변 외에도 이미 존재합니다. 옵션을 tr
사용하여 동일한 작업을 수행 할 수 있습니다 --delete
.
echo "2.3.3" | tr --delete .
어느 것이 출력 될까요? 233
답변
당신은 sed
대신 시도해야
sed 's/\.//g'
답변
echo "$VERSION" | tr -cd [:digit:]
다른 문자가 무엇이든 관계없이 숫자 만 반환합니다.
답변
펄
$ VERSION='2.3.3'
$ perl -pe 's/\.//g' <<< "$VERSION"
233
파이썬
$ VERSION='2.3.3'
$ python -c 'import sys;print sys.argv[1].replace(".","")' "$VERSION"
233
$VERSION
숫자와 점만 포함 하면 더 짧은 작업을 수행 할 수 있습니다.
$ python -c 'print "'$VERSION'".replace(".","")'
233
( $VERSION
문자가 포함되어 있으면 코드 삽입 취약점이므로주의하십시오 ).
AWK
$ VERSION='2.3.3'
$ awk 'BEGIN{gsub(/\./,"",ARGV[1]);print ARGV[1]}' "$VERSION"
233
아니면 이거:
$ awk '{gsub(/\./,"")}1' <<< "$VERSION"
233