python - Bash 或 Python 倒退?

标签 python bash

我有一个文本文件,其中随机出现了很多字符串@STRING_A,我有兴趣编写一个仅删除其中一些字符串的简短脚本。特别是扫描文件的文件,一旦找到以该字符串开头的行,例如

@STRING_A

然后检查向后 3 行是否有另一行以相同的字符串开头,例如

@STRING_A


@STRING_A

如果发生,则向后删除 3 行。我在考虑 bash,但我不知道如何用它“倒退”。所以我确信这对于 bash 是不可能的。我也考虑过 python,但是我应该将所有信息存储在内存中以便倒退,然后对于长文件来说这是不可行的。

你怎么看?是否可以在 bash 或 python 中完成?

谢谢

最佳答案

有趣的是,在所有这些时间之后,还没有人给出实际措辞的问题解决方案(正如@John Machin 在评论中指出的那样)——只删除前导标记(如果后面跟着另一个这样的标记 3 行),不是包含它的整行。当然,这并不难——这是 @truppo 的有趣解决方案所需要的一个小模组,例如:

from itertools import izip, chain
f = "foo.txt"
for third, line in izip(chain("   ", open(f)), open(f)):
    if third.startswith("@STRING_A") and line.startswith("@STRING_A"):
        line = line[len("@STRING_A"):]
    print line,

当然,在现实生活中,人们会使用 iterator.tee 而不是读取文件两次,将此代码放在一个函数中,而不是无休止地重复标记常量,&c;-)。

关于python - Bash 或 Python 倒退?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012490/

相关文章:

python - 密码哈希程序

python - 没有名为 django_filters 的模块

python - 在 Anaconda 下安装 OpenCV 后如何解决调试/发布冲突

python - 如何在 Pony ORM 中使用 Oracle 模式名称?

bash - 我可以 grep 获取 grep 结果的相同结果数吗?

linux - 如何使用 Bash Shell 检查 Java 版本?

linux - 制作一个 "copy"的linux系统

python - 与之前的结果重复映射

bash - 可以在 bash 脚本中使用 httpclient 吗?对于基于 session 的 HTTP GET 和 POST

mysql - 表热图中的 0-1-2 矩阵