找到一个文件并删除其中的一些行

找到一个文件并删除其中的一些行

如何找到特定文件然后使用终端在一行中删除其中的某些行?

例如,我想file.txt在某个特定目录中查找,然后删除其中的第 5 到第 10 行。是否可以使用单行命令来完成此操作?

答案1

您可以使用...

find /path/to/specific/directory -maxdepth 1 -type f -name "file.txt" -exec sed -i.bak '5,10 d' '{}' \;

解释:

  • -maxdepth 1不查看指定目录的任何子目录
  • -type f仅查找文件,不查找目录
  • -exec对找到的文件执行以下命令
  • sed '5,10 d'删除第 5 至 10 行
  • -i.bak修改文件本身,而不是打印到标准输出,而是使用扩展名制作原始文件的备份副本.bak

编辑:尽管实际上如果你确切知道文件在哪里以及它叫什么,你显然可以这样做

sed -i.bak '5,10 d' /path/to/file.txt

我真傻……

相关内容