変数(私の場合は開発キットのバージョンです)を解析して、それを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
(これらのシェルのマニュアルでは、これはパラメータ展開セクションにあります。)
年代順:
echo "$VERSION" | tr -d .
echo "$VERSION" | sed 's/\.//g'
echo $VERSION:as/.//
set -f
IFS=.
set -- $VERSION
IFS=
echo "$*"
ASH_BASH_COMPAT
でビルドした場合はbusybox ash
)echo "${VERSION//.}"
echo $VERSION:gs/./
成功した回答に加えて、すでに存在しています。 --delete
オプションを使用して、tr
を使用しても同じことができます。
echo "2.3.3" | tr --delete .
出力されるのは:233
代わりにsed
を試してください
sed 's/\.//g'
$ 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
には任意の文字を含めることができます)。
$ VERSION='2.3.3'
$ awk 'BEGIN{gsub(/\./,"",ARGV[1]);print ARGV[1]}' "$VERSION"
233
またはこれ:
$ awk '{gsub(/\./,"")}1' <<< "$VERSION"
233
echo "$VERSION" | tr -cd [:digit:]
他の文字が何であっても、数字のみを返します