gpt4 book ai didi

linux - AWK 有助于削减一些值(value)

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:19 24 4
gpt4 key购买 nike

在变量中,值可以是这样的:

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.. 在任何情况下我只想要 last 3rd last value.. 就像在这种情况下 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

但我不得不承认你所追求的并不完全清楚。

关于linux - AWK 有助于削减一些值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51598538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com