Macos Mac OS X从多个文件中删除行

Macos Mac OS X从多个文件中删除行,macos,grep,Macos,Grep,我正试图从几百个文件中删除一行。下面的内容正是我所需要的,但它没有按预期保存更改 $ grep -v meow src/files 我已经看到,在给定命令的末尾追加>将指定输出缓冲区应该保存的位置,但是,这对多个文件有效吗 所以我想知道是否有一种通过终端进行批量编辑的优雅方式。我遇到的所有使用awk或sed的示例都只提供了一次编辑一个文件的解决方案。一种方法是使用以下Perl one liner: perl -i.bak -n -e 'print unless /meow/' src/file

我正试图从几百个文件中删除一行。下面的内容正是我所需要的,但它没有按预期保存更改

$ grep -v meow src/files
我已经看到,在给定命令的末尾追加>将指定输出缓冲区应该保存的位置,但是,这对多个文件有效吗


所以我想知道是否有一种通过终端进行批量编辑的优雅方式。我遇到的所有使用awk或sed的示例都只提供了一次编辑一个文件的解决方案。

一种方法是使用以下Perl one liner:

perl -i.bak -n -e 'print unless /meow/' src/files

这应该可以就地编辑多个文件。原始文件保存在.bak文件中。

一种方法是使用以下Perl One liner:

perl -i.bak -n -e 'print unless /meow/' src/files

这应该可以就地编辑多个文件。原始文件保存在.bak文件中。

另一种方法是使用sed执行类似的操作:

sed -i .bak '/meow/d' src/files/*
毕竟,Perl从sed获得了它的-i选项。请注意,要不使用备份文件,您需要一个明确的空扩展名,其中至少包含一些sed版本:

sed -i '' '/meow/d' src/files/*

另一种方法是使用sed执行类似操作:

sed -i .bak '/meow/d' src/files/*
毕竟,Perl从sed获得了它的-i选项。请注意,要不使用备份文件,您需要一个明确的空扩展名,其中至少包含一些sed版本:

sed -i '' '/meow/d' src/files/*

谢谢不过,我使用您的推荐收到了以下错误。无法进行就地编辑:src/files不是常规文件。那么,什么是src/files呢?它是目录吗?你没那么说。如果是,则使用src/files/*选择该目录中的所有文件。谢谢!这真是太棒了!如果我不想将原件保存在.bak文件中?如果你不想.bak文件,请使用just-I而不提.bak.不多。您可以用$find src/files-type f替换src/files,它将选择src/files及其子目录中的所有文件。谢谢!不过,我使用您的推荐收到了以下错误。无法进行就地编辑:src/files不是常规文件。那么,什么是src/files呢?它是目录吗?你没那么说。如果是,则使用src/files/*选择该目录中的所有文件。谢谢!这真是太棒了!如果我不想将原件保存在.bak文件中?如果你不想.bak文件,请使用just-I而不提.bak.不多。您可以将src/files替换为$find src/files-type f,它将选择src/files及其子目录中的所有文件。sed和perl解决方案都不是特定于Mac OS X的。当然,前面已经介绍过了,无论是在堆栈溢出还是在Unix/Linux exchange中。sed和perl解决方案都不是Mac OS X特有的。当然,在堆栈溢出或在Unix/Linux exchange中,前面已经讨论过这一点。