1

ユーザーは、入力とともにスクリプトを呼び出します。数字はXX.XX.XX.XXどこにありますか。左からX'sの 2 番目のセットを抽出しようとしています。XX

私はやっている例を見てきました:

${1%.*}  <- deletes the last . and everything else after
${1##*.} <- deletes last . and everything before

しかし、特殊文字が何をするかについての説明がなければ、問題を解決するのに苦労しています.

どんな助けでも大歓迎です。

4

3 に答える 3

3

awk の使用:

x='12.34.56.78'
awk -F '.' '{print $2}' <<< "$x"
34

純粋な BASH (配列) の使用:

n=$(IFS='.' read -ra arr <<< "$x" && echo "${arr[1]}") && echo "$n"
34

配列なしで純粋な BASH を使用する 1:

y="${x#*.}"
echo "${y%%.*}"
34

配列なしで純粋な BASH を使用する 2:

n=$(IFS='.' && set -- $x && echo "$2") && echo "$n"
34

sed を使用:

sed 's/^[^.]*\.\([^.]*\).*$/\1/' <<< "$x"
34
于 2013-09-04T20:33:08.297 に答える
1

純粋な古い Bourne シェル:

(IFS=. ; set $1; echo "$2")

文字列置換を少しずつ行うこともできます。

x=${1#*.}
echo "${x%%.*}"
于 2013-09-04T20:46:04.853 に答える