gpt4 book ai didi

regex - SED 仅在变量、正则表达式使用之间替换空白

转载 作者:行者123 更新时间:2023-12-01 11:25:28 24 4
gpt4 key购买 nike

我最近在做日志分析时遇到了一个棘手的情况,我不是 REGEX 专家所以只是想在这里发帖看看我是否有什么好的解决方案

问题: 下面我粘贴了我在 unix 日志文件上执行 awk 和 grep 命令得到的结果。使用 awk |sort |uniq -c

          `2851 ABC=10087 ACG=123 RMC=17`
`2851 ABC=10087 ACG=123 RMC=17`
`1323 ABC=10087 ACG=123 RMC=10`
`1323 ABC=10087 ACG=123 RMC=20`
`1323 ABC=10087 ACG=123 RMC=20`
`248 ABC=10087 ACG=123 RMC=8`
`248 ABC=10087 ACG=123 RMC=8`
`236 ABC=10087 ACG=123 RMC=7`
`127 ABC=10087 ACG=123 RMC=16`
`127 ABC=10087 ACG=123 RMC=16`
`67 ABC=10087 ACG=123 RMC=1`

我将此输出(“|”)传送到上面并对其应用 sed 命令以对第 7 个字段进行排序(即降序排列的 RMC 值),所以我使用了此

sed's/=//g' |sort -rnk 7,7 .

在对值进行排序后,我再次将输出更改为看起来像以前的样子,所以我重新应用了我使用的 sed,

sed 's/=//g' |sort -rnk 7,7 |sed 's//=/g'

这是我所期待的

       `1323 ABC=10087 ACG=123 RMC=20`
`1323 ABC=10087 ACG=123 RMC=20`
`2851 ABC=10087 ACG=123 RMC=17`
`2851 ABC=10087 ACG=123 RMC=17`
`127 ABC=10087 ACG=123 RMC=16`
`127 ABC=10087 ACG=123 RMC=16`
`1323 ABC=10087 ACG=123 RMC=10`
`248 ABC=10087 ACG=123 RMC=8`
`248 ABC=10087 ACG=123 RMC=8`
`236 ABC=10087 ACG=123 RMC=7`
`67 ABC=10087 ACG=123 RMC=1`

但我的输出看起来像这样

    `===1323=ABC=10087=ACG=123=RMC=20`
`===1323=ABC=10087=ACG=123=RMC=20`
`===2851=ABC=10087=ACG=123=RMC=17`
`===2851=ABC=10087=ACG=123=RMC=17`
`====127=ABC=10087=ACG=123=RMC=16`
`====127=ABC=10087=ACG=123=RMC=16`
`===1323=ABC=10087=ACG=123=RMC=10`
`====248=ABC=10087=ACG=123=RMC=8`
`====248=ABC=10087=ACG=123=RMC=8`
`====236=ABC=10087=ACG=123=RMC=7`
`=====67=ABC=10087=ACG=123=RMC=1`

我怎样才能达到我想要的输出?

最佳答案

您只需要使用 -t 选项进行排序:

sort -t = -rnk 4

如果您告诉 sort 使用等号作为字段分隔符,它就会起作用。

关于regex - SED 仅在变量、正则表达式使用之间替换空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60532134/

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