bash - sed 命令 - 适用于文件夹的所有文本 (.txt) 文件

标签 bash sed

我想应用这个 sed 命令

sed '/begin 644/,$d' file1.txt > file1.txt

目录的所有文件..基本上我想保持相同的名称但在找到某个字符串后删除所有行..我如何调整这个sed命令以应用于所有文本(.txt ) 文件夹中的文件并保留其原始名称 ?

编辑:我正在使用 Mac OS X 我不知道 sed 命令是否有问题...

如果我尝试做

sed -i '/begin 644/,$d' *.txt

我收到错误 sed: 1: 替换命令中的错误标志:'x'

第二次编辑:Anu 的回答有效!

最佳答案

您可以将此findsed 一起使用:

find . -maxdepth 1 -name '*.txt' -exec sed -i.bak '/begin 644/,$d' {} + 

或者如果你想保留 begin 644:

find . -maxdepth 1 -name '*.txt' -exec sed -i.bak -n '1,/begin 644/p' {} + 

关于bash - sed 命令 - 适用于文件夹的所有文本 (.txt) 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28615943/

相关文章:

linux - 用 sed 注释掉/注释行

linux - Sed/AWK 在每个匹配的模式后搜索/替换字符串

linux - 每次打开 Ubuntu 终端时 Bash 都没有这样的文件或目录

linux - scrot 区域不起作用的 Bash 脚本

json - 使用 bash 脚本从 API 保存 JSON

regex - 如何使用 sed 替换正则表达式捕获组?

linux - 在子目录中搜索相同的文件并替换所有子目录中的字符串

bash - sed 不替换行

Bash 脚本杀死并重新启动 Hudson

linux - 使用 linux bash 同时向多个主机发送 http-get 请求