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



我想应用这个sed命令

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

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

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

如果我试着做

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

我得到一个错误sed:1:替换命令中的错误标志:"x"

第二版:阿奴的答案奏效了!

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

只需将sed的就地版本用作

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

您可以使用edit-in-place-sed选项和类似的星形选择器

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

最新更新