macos - OSX & SED - 删除文档目录中第 25 行之后的所有行
问题描述
我有一个包含数千个 txt 文件的目录。我需要修剪文件,以便删除每个文件中第 25 行之后的每一行。我正在使用 Mac OSX 10.14.6。
我怎样才能做到这一点?
我所做的尝试
经过研究,我认为 Mac OSX 终端中的 SED 是最好的方法。
本页提供了有关如何在 SED 中定位行的示例。所以我认为我需要的 SED 命令是:
sed '1,25!d'
这告诉 SED 删除除第 1 行到第 25 行之外的所有内容。当我在单个文件上尝试时,它可以工作。
我现在需要扩展它,以便它适用于文件目录。
这个答案说我可以使用 SEDs -n 和 -i 标志来做到这一点(它还提到了在 OSX 上不起作用的 -s 标志)。
所以我认为代码应该是这样的:
sed -n -i '1,25!d' *.txt
但是当我尝试它时,我得到了这个错误:
sed: 1: "filename": command a expects \ followed by text
我尝试了其他变体,但似乎没有一个有效。
解决方案
MacOS 使用 BSD sed,而不是 GNU sed:阅读man sed
该-i
选项需要BSD sed 中的参数。如果您不想要文件的备份副本,则参数为空字符串:
$ seq 50 | tee file1 > file2
$ wc file1 file2
50 50 141 file1
50 50 141 file2
100 100 282 total
$ sed -i '' -n '1,25p' file1 file2
$ wc file1 file2
25 25 66 file1
25 25 66 file2
50 50 132 total
推荐阅读
- javascript - 如何检查 Here Maps API 是否已加载?
- android - 无法解决:org.jitsi.react:jitsi-meet-sdk:+
- c# - 必须遵守不返回任务的接口 - 必须使用异步库
- java - 无法通过java中的QueryBuilder将json插入cassandra
- plsql - gsource_nm VARCHAR2(1024) := '$Source: /var/opt/pat/iisi/src/plsql/p_autoeph_hpe.sql,v $';
- python - python xlrd属性错误
- docker - 在 docker 容器中找不到文件
- c++ - TensorFlow c++ API 在 session->run() 上崩溃
- r - 是否可以定义内容根文件夹?
- javascript - 根据输入值更改 href 目标