假设我有字符串1:2:3:4:5,我想要得到它的最后一个字段(在本例中是5)。我如何使用Bash做到这一点?我试过cut,但我不知道如何用-f指定最后一个字段。
当前回答
你可以使用字符串操作符:
$ foo=1:2:3:4:5
$ echo ${foo##*:}
5
这将从前面到':'贪婪地修剪所有内容。
${foo <-- from variable foo
## <-- greedy front trim
* <-- matches anything
: <-- until the last ':'
}
其他回答
sed中的正则表达式匹配是贪婪的(总是到最后一个出现),你可以在这里使用它:
$ foo=1:2:3:4:5
$ echo ${foo} | sed "s/.*://"
5
for x in `echo $str | tr ";" "\n"`; do echo $x; done
使用Bash。
$ var1="1:2:3:4:0"
$ IFS=":"
$ set -- $var1
$ eval echo \$${#}
0
使用read内置的解决方案:
IFS=':' read -a fields <<< "1:2:3:4:5"
echo "${fields[4]}"
或者,让它更通用:
echo "${fields[-1]}" # prints the last item
你可以使用字符串操作符:
$ foo=1:2:3:4:5
$ echo ${foo##*:}
5
这将从前面到':'贪婪地修剪所有内容。
${foo <-- from variable foo
## <-- greedy front trim
* <-- matches anything
: <-- until the last ':'
}
推荐文章
- Linux Bash中双&和分号有什么区别?
- 在Bash中模拟do-while循环
- 在Bash中将输出赋给变量
- 如何在Mac OS X 10.6中使硬件发出哔哔声
- 从Docker容器获取环境变量
- Java中的split()方法对点(.)不起作用。
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- 如何循环通过一个目录递归删除具有某些扩展名的文件
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务
- 在OSX中永久设置PATH环境变量
- 删除Bash脚本中的重复条目
- 如何将Bash命令的输出分配给变量?
- 在bash中传递数组作为参数
- 如何在shell中为for循环添加前导零?