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

标签 linux bash delete-row

<分区>

我有一个自动生成的文件,该文件可能包含重复数据,这会导致我的解析器崩溃。如何逐行检查并根据 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

最佳答案

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

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

关于linux - 如何复制或删除 bash 中的特定行并将它们创建到新文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34050785/

相关文章:

MySQL ERROR 1470 (HY000) 字符串 %s 对于主机名来说太长

python - Bash 隐形打字

Linux配置文件名称带数字

linux - Unix sed 命令没有替换提供的字符串

mysql - COUNT(*) 即使在删除所有行后也需要很长时间

linux - 如何从我的 CSV 文件输出中删除 NONREF,以便在脚本运行时不打印该行?

python - 如何避免 os.system() 在 python 中打印出返回值

bash - 使用 Bash 的两个列表之间的区别

JQuery删除行最多允许totalrows-1