regex - 使用特定的正则表达式从一个巨大的重复文件中提取特定行

标签 regex linux awk

我有一个这种格式的大文件:

Sequence

xxxxx 12  161
xxxxx 54  148
Sequence

hhhhh 4   110
gsgsgs 8   88
Sequence

jjjjj 1   45
skskkak 5  8

等等... 我只想要一个文件,其中第一个完整的行位于“sequence”一词之后(请注意,该词之后有一个空格)。即:

xxxxx 12  161
hhhhh 4   110
jjjjj 1   45

有什么帮助吗?我想用 awk 来做,但我不经常使用,所以我对正则表达式有点迷茫......

最佳答案

Sed 解决方案就像

$ sed -n '/Sequence/{n;n;p}' test
xxxxx 12  161
hhhhh 4   110
jjjjj 1   45

如果你想要awk你可以试试

$ awk '/Sequence/{getline; getline; print}' test
xxxxx 12  161
hhhhh 4   110
jjjjj 1   45

短得多

awk '/Sequence/{x=NR+2}NR==x'

感谢 Jidder 的建议

关于regex - 使用特定的正则表达式从一个巨大的重复文件中提取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27012565/

相关文章:

shell - 将 shell 变量替换为 awk 模式,查看文件扫描

linux - 使用 shell 计算学生的平均分

python - nltk 的 text6 中第一个字母为大写,所有其他字母为小写

regex - 我不明白正则表达式

linux - 无法在 Ubuntu 10.04、CUDA 5.0 上编译 MAGMA 1.3

c++ - 使用 makefile 编译 C++ 11 程序的简单方法

linux - 性能调用图中的源代码行号?

php - 如何从大数据库中的文本中检测特定关键字?

javascript - React 电子邮件验证中的正则表达式

Linux/Unix bash 基本脚本 awk/sed