如何找到特定文件然后使用终端在一行中删除其中的某些行?
例如,我想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
我真傻……