用户调用脚本以及输入XX.XX.XX.XX
,其中X's
是数字。
我正试图从左边提取第二组XX
。
我看了一些例子:
${1%.*} <- deletes the last . and everything else after
${1##*.} <- deletes last . and everything before
但是如果不解释特殊角色的作用,我就无法解决问题。
非常感谢任何帮助。
答案 0 :(得分: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
使用不带阵列2的纯BASH
n=$(IFS='.' && set -- $x && echo "$2") && echo "$n"
34
使用sed:
sed 's/^[^.]*\.\([^.]*\).*$/\1/' <<< "$x"
34
答案 1 :(得分:1)
纯旧的Bourne shell:
(IFS=. ; set $1; echo "$2")
你也可以零碎地进行字符串替换:
x=${1#*.}
echo "${x%%.*}"
答案 2 :(得分:0)
这里您的输入XX.XX.XX.XX长度相同,您需要3,4的索引
XX.XX.XX.XX
01234567... //indexes
x="12.34.56.78"
result=${x:3:4}
echo $result
结果将是34