gpt4 book ai didi

linux - 提取两个相同分隔符(多实例分隔符)之间的行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:33 26 4
gpt4 key购买 nike

我想要的是从第一次出现的分隔符到最后一次出现同一个分隔符,包括它们之间的所有内容,分隔符可能在日志文件中出现多次。 enter image description here

样本.log

[T=iaaaaaaaaa134]:SampleClass9: 
[T=iaaaaaaaaa134]:SampleClass7:
[T=iaaaaaaaaa134]:SampleClass3:
[T=iaaaaaaaaa134]:SampleClass1:
[T=i8732jddcd234]:SampleClass1:
[T=i8732jddcd234]:SampleClass2:
[T=i8732jddcd234]:SampleClass3:
[T=i8732jddcd234]:SampleClass4:
Exception:NullPointerException:
sampte 1
sampte 1
sampte 1
sampte 1
sampte 1

[T=i8732jddcd234]:SampleClass00:
[T=i8732jddcd234]:SampleClass00:
[T=i8732jddcd234]:SampleClass00:
[T=i8732jddcd234]:SampleClass00:
[T=i8732jddcd234]:SampleClass00:
Exception:NullPointerException2:
sampte 2
sampte 2
sampte 2
sampte 2
sampte 2
[T=i8732jddcd234]:SampleClass12:
[T=i8732jddcd234]:SampleClass32:
[T=i8732jddcd234]:SampleClass22:
[T=2eeeeeeeee234]:SampleClass32:
[T=2eeeeeeeee234]:SampleClass82:
[T=2eeeeeeeee234]:SampleClass22:
[T=2eeeeeeeee234]:SampleClass22:

例如:我想提取从第一次出现的 i8732jddcd234(分隔符)到最近出现的 i8732jddcd234 以及它们之间的所有内容的行。可能使用 awk、sed、grep linux 命令。因为这是 linux 服务器上的日志文件。我试过

awk /'i8732jddcd234','i8732jddcd234'/ test.log

当然不行

最佳答案

遵循 awk 可能会对您有所帮助。

awk '/i8732jddcd234/{if(!first){first=FNR};end=FNR} {a[FNR]=$0} END{for(i=first;i<=end;i++){print a[i]}}'  Input_file

现在也添加了一种非线性形式的解决方案。

awk '
/i8732jddcd234/ {
if (!first) {
first = FNR
}
end = FNR
}
{
a[FNR] = $0
}
END {
for(i = first; i <= end; i++) {
print a[i]
}
}' Input_file

关于linux - 提取两个相同分隔符(多实例分隔符)之间的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274871/

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