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

时间:2015-02-19 20:09:05

标签: 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的答案有效!

3 个答案:

答案 0 :(得分:3)

您可以将此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' {} + 

答案 1 :(得分:2)

只需使用sed的就地版本

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

答案 2 :(得分:1)

您可以使用编辑就位选项和星号选择器,如此

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