我想应用此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的答案有效!
答案 0 :(得分:3)
您可以将此find
与sed
:
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