linux - 删除第一期和第二期,同时保留两者之间的所有内容 (Linux)

标签 linux shell

用户调用脚本并输入 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

关于linux - 删除第一期和第二期,同时保留两者之间的所有内容 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623134/

相关文章:

linux - 从文件中剪切 13*10^6 行

shell - 从文本文件中删除重复的行

python - python脚本的shell启动/停止

linux - 从 shell 脚本锁定 ubuntu

linux - 使用带 apache 的正则表达式重定向

linux - 如何在Windows 10中扩展磁盘空间?

linux - 转储和丢弃特定应用程序的网络数据包的最佳方法是什么?

linux - 从 csv 文件中删除标题和空行

Bash 循环 ping 成功

php - 使用 shell 和 ImageMagick 递归调整图像大小