从多个文件中删除文本

时间:2011-11-15 16:04:33

标签: macos text file-io osx-snow-leopard

我想删除多个文件中的文字。它可能是10到1000个文件,因此手动删除它是太多的工作。 我发现了几个SO问题,例如: Delete specific lines in multiple Text Files with freeware App?但他们都没有帮助

要查找和替换,我可以编写一个perl命令,但它缺少选项。 例如,我想删除所有文件中的前四行。 有谁知道解决方案?或者也许是应用程序?我更喜欢没有VBScript的东西。

4 个答案:

答案 0 :(得分:2)

BBEdit TextWrangler(免费)可以在多个文件中进行更改。该命令是“搜索”菜单下的“多文件搜索”。

答案 1 :(得分:2)

sed(1)awk(1)对这项工作非常有用。例如,要删除当前目录中所有.txt个文件的前4行:

sed -i~ 1,4d *.txt

这将删除当前目录子目录中任何位置的所有.txt文件的前4行:

find . -type f -iname \*.txt -exec sed -i~ 1,4d '{}' +

答案 2 :(得分:1)

SED可能会很好用。是免费的,可以做很多你想要的。有windows,mac和linux端口。

SED Stream Editor

答案 3 :(得分:1)

例如,如果您尝试从多个代码文件中删除注释,并且存在类似所有注释以#开头的模式,则打开控制台,移动到文件所在的目录,然后键入以下命令:

foreach file (*dat)
sed '/^\#/d' $file > tt
mv tt $file
end

在其他情况下,您可能有一个文本文件,其顶部的给定行数是注释。假设您要摆脱前3行。好吧,这就是诀窍:

sed '1,3d' myFile > tt 
mv tt myFile

以下是发生的事情:

  • sed '/^\#/d' myFile从文件myFile中删除以#开头的所有行,并在控制台中输出结果。
  • > tt将输出重定向到名为tt
  • 的临时文件中
  • mv tt myFile将临时文件tt移至myFile