python - 在大文件中搜索每第 n 个行模式,然后为下一个 x 行范围添加前缀

标签 python linux bash awk sed

<分区>

例如

我有一个带有以下模式的大文件。搜索模式是日期,我必须为接下来的 n 行添加日期前缀。日期模式恰好在第 n 个重复行,接下来的几行也是固定数字。

date 1  
line 1  
line 2  
line 3  
date 2  
line 4  
line 5  
line 6  
date 3  
line 7  
line 8  
line 9  

上面的模式应该转换成下面的样子

date 1 line 1  
date 1 line 2  
date 1 line 3  
date 2 line 4  
date 2 line 5  
date 2 line 6  
date 3 line 7  
date 3 line 8  
date 3 line 9  

是否有使用 sed/awk 的简单命令可以执行此操作,还是我应该继续编写 bash/python 脚本?

最佳答案

使用 awk:

awk -v pattern="date" '$0~pattern{p=$0;next}{print p,$0}' file

pattern 变量更改为与您的文件匹配的任何内容。

关于python - 在大文件中搜索每第 n 个行模式,然后为下一个 x 行范围添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50740414/

相关文章:

linux - x64 memset 核心,传递的缓冲区地址是否被截断?

python - 获取 APSW 中的所有内容

Python十进制转二进制递归

编写接受多种类型的库函数的 Pythonic 方式?

linux - 在 RHEL 6.4 上永久挂载 Netapp NFS 共享

c++ - Linux进程分配的内存使用情况

linux - Shell 脚本 while 循环

bash - 如何为整个命令应用环境变量

python - 主键可以使用 BigInteger 作为 Django 1.2.4 中的 AutoField 吗?

windows - 批处理脚本打印将要执行的命令而不是执行