用户调用脚本以及输入数字XX.XX.XX.XX
在哪里X's
。我正在尝试XX
从左侧提取第二组。
我查看了以下示例:
${1%.*} <- deletes the last . and everything else after
${1##*.} <- deletes last . and everything before
但是没有解释特殊字符的作用,我无法解决我的问题。
任何帮助将不胜感激。
使用 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
纯旧的 Bourne shell:
(IFS=. ; set $1; echo "$2")
您也可以零敲碎打地进行字符串替换:
x=${1#*.}
echo "${x%%.*}"
这里你输入的 XX.XX.XX.XX 长度是相同的,你需要 3,4 的索引
XX.XX.XX.XX
01234567... //indexes
x="12.34.56.78"
result=${x:3:4}
echo $result
结果将是 34