如何复制或删除bash中的特定行并将它们创建到新文件中[重复]

Posted

技术标签:

【中文标题】如何复制或删除bash中的特定行并将它们创建到新文件中[重复]【英文标题】:How to copy or delete specific lines in bash and create them into a new file [duplicate] 【发布时间】:2016-03-07 04:03:31 【问题描述】:

我有一个可能包含重复数据的自动生成文件,这会导致我的解析器崩溃。如何逐行检查并根据 bash 上的字符删除不需要的行?例如:

   for line in file.txt:
            if '(1)' in line:
                delete line
            elif '(2)' in line:
                delete line
            elif '(3)' in line:
                delete line
            else:
                return (file.txt with those lines removed )

示例输入

Hello my name is john
Hello my name is eric
Hello my name is jonh(2)
Hello my name is ray
Hello my name is john (1)
Hello my name is eric (3)

样本输出

Hello my name is john
Hello my name is eric
Hello my name is ray

【问题讨论】:

请在您的问题中添加示例输入和该示例输入所需的输出。 你试过grep -v吗? 看起来您已经在这里待了足够长的时间并且提出了很多问题而没有接受一个答案,即使有很多好的答案。请使用tour 并查看What does it mean when an answer is "accepted"。不要发表感谢评论,如果答案对您有帮助,只需单击复选标记(这会给两个用户带来一定的声誉)。事实上that's not an expected behavior and may be flagged。 Same to thanks in the post 【参考方案1】:

要排除具有模式 ( + 字母 + ) 的行,您可以这样做:

grep -v '(.)' file

如果您希望字母是数字:

grep -v '([0-9])' file

如果要排除单个特定数字:

grep -v '(1)' file

如果要排除多个特定数字:

grep -v '([123])' file

如果要排除多个不同的模式

grep -v -e pattern1 -e pattern2 -e pattern3 file

【讨论】:

我想举一个使用多个 -e 标志的多个模式的示例。但你是对的,这一点还不够清楚。我更新了以使其更清楚,感谢您指出 非常感谢您的帮助 为格式化道歉。请使用以下代码。 import re fle = open('text', 'r') dat = fle.readlines() for i in dat: if not re.findall(r'\([0-9]1,3\)', str(i)): print i.rstrip()

以上是关于如何复制或删除bash中的特定行并将它们创建到新文件中[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除功能仍然可用

如何读取 bash 中的行并用指定的分隔符分隔它们? [复制]

Xamarin:如何删除网格中特定行中的项目

R:如何删除矩阵中的特定行? [复制]

通过数据框中的列表 len 复制行并将它们添加为索引

读取特定行中的值(可变数量的值)并将它们存储在数组中