2010-07-25 101 views
1

我有大约350个文本文件,它们构成我HD上5个文件夹的全部内容。对于这些文件中的每一个,我希望在每个文件的开始和结尾删除指定数量的字符。我不知道AppleScript,但怀疑它可能适合我想实现的目标。任何关于自动化的帮助将不胜感激,因为手动编辑这些文件是一项艰巨的任务。非常感谢你。编辑大量的文本文件

以下文本需要从每个文件的开头删除:

STARTTYPE:RGIN 
MODEXP:NO 

下需要从每一个文件的末尾被删除:

REFACTORSCALE:2.0 
ENDTYPE:FACTORED 
+0

对于需要在开始/结束时删除的文本,是否所有文本都在一行?也就是说,中间没有换行符? – 2010-07-25 18:12:47

+0

不,每个短语后面都有换行符,所以上面总共出现4行。谢谢! – RunLoop 2010-07-25 18:14:59

回答

2

确实OS X有unix命令sed?它旨在解决这种类型的问题。

你会说(假设你的文字删除在每个文件相同):

sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' file_pattern 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' file_pattern 

例如,让我们说了一堆的.txt文件需要有这些编辑下这5个目录进行你的主目录。你可以这样做:

sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' /home/Run_Loop/directory_1/*.txt 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' /home/Run_Loop/directory_1/*.txt 
sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' /home/Run_Loop/directory_2/*.txt 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' /home/Run_Loop/directory_2/*.txt 
sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' /home/Run_Loop/directory_3/*.txt 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' /home/Run_Loop/directory_3/*.txt 
sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' /home/Run_Loop/directory_4/*.txt 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' /home/Run_Loop/directory_4/*.txt 
sed -i 's/STARTTYPE:RGIN\nMODEXP:NO\n//' /home/Run_Loop/directory_5/*.txt 
sed -i 's/REFACTORSCALE:2.0\nENDTYPE:FACTORED\n//' /home/Run_Loop/directory_5/*.txt 
+0

感谢这看起来很有帮助,但我将如何迭代5个目录中的不同文件?他们有不同的名字,但有相同的扩展名。 – RunLoop 2010-07-25 17:33:09

+0

这5个东西中的每一个目录是_trees_还是仅仅是目录?如果他们只是目录,我只需更改上面的file_pattern以适应这5个目录,或者编写一个shell脚本来运行该对5次,每个目录一次。 – 2010-07-25 17:39:11

+0

如果它们是目录_trees_,则必须编写遍历树的脚本,找到包含这些文件的所有目录,然后为每个叶目录运行一对sed命令。不知道如何从我的头顶上做到这一点。至少在机器上,sed无法在递归搜索中替换文件。如果你需要写这个,我会查找有关unix find命令的文档。 – 2010-07-25 17:41:04