linux - AWK 有助于减少一些价值
问题描述
在变量中,值可以是:
ab_5.6.533.162665_84.kn or ab_5.6.550_prod342.6.165834_84.kn
值 162665 可以更改。模式将保持不变:ab_5.6.533.162665_84.kn 或 ab_5.6.550_prod342.6.165834_84.kn .. 无论如何我只想要最后一个倒数第三个值.. 就像在这种情况下 162665 。所以问题是获取ab_5.6.533./ab_5.6.550_prod342.6之间的值。和 _84.kn 在这里是 162665
我总是想抓住(倒数第三个)“165834”这个值..任何帮助将不胜感激
简而言之,我需要一个在这两种情况下都有效的命令。
我使用 cut,但它适用于一种情况,不适用于其他情况
root:~# cat abc.log | cut -d '.' -f 4
162665_84
6
root:~#
cat abc.log
ab_5.6.533.162665_84.kn
ab_5.6.550_prod342.6.165834_84.kn
解决方案
鉴于:
$ echo "$s"
ab_5.6.533.162665_84.kn
ab_5.6.550_prod342.6.165834_84.kn
如果感兴趣的领域是倒数第二个,您可以执行以下操作:
$ echo "$s" | awk -F "[._]" '{print $(NF-2)}'
162665
165834
或者,sed
如果它是以下字段,则可以使用.[0-9]+_
:
$ echo "$s" | sed -nE 's/.*[.]([0-9][0-9]*)_.*$/\1/p'
162665
165834
或者您可以使用rev
,以便您可以使用cut
来倒数计算字段:
$ echo "$s" | rev | cut -d _ -f 2 | cut -d . -f 1 | rev
162665
165834
但我不得不承认你所追求的并不完全清楚。
推荐阅读
- typescript - 如何在 TypeScript 中实现类型化的“both”函数?
- python - PyTorch 模型保存错误:“无法腌制本地对象”
- python - 单元测试:使用您正在测试的程序中的函数
- mysql - MySQL 使用 Debezium 对 Kafka 的更改 - 仅捕获 DDL stmts
- graph - 无法从 csv 加载 Cytoscape 中的节点表
- sql-server - 如何使用随机数生成真正的随机结果?ABS(CHECKSUM(NewID))) 不工作
- html - 如何修复无法读取 Angular 中的属性
- python - 簇/斑点检测
- ruby-on-rails - 扩展 Rails ThoughtBot/Clearance gem 以进行密码轮换
- firebase - 如何获取 Firebase 文档中的特定字段