【问题标题】:Editing large number of text files编辑大量文本文件
【发布时间】:2010-07-25 17:24:53
【问题描述】:

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

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

STARTTYPE:RGIN
MODEXP:NO

需要从每个文件的末尾删除以下内容:

REFACTORSCALE:2.0
ENDTYPE:FACTORED

【问题讨论】:

  • 对于需要在开头/结尾删除的文本,该文本是否都在一行?即中间没有换行符?
  • 不,每个短语后面都有换行符,所以上面总共出现了 4 行。谢谢!

标签: macos terminal applescript


【解决方案1】:

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

【讨论】:

  • 谢谢 这看起来很有帮助,但我将如何遍历 5 个目录中的不同文件?它们的名称不同,但扩展名相同。
  • 这 5 个东西中的每一个是目录 trees 还是只是目录?如果它们只是目录,我只需更改上面的 file_pattern 以适应这 5 个目录,或者编写一个 shell 脚本来运行该对 5 次,每个目录一次。
  • 如果它们是目录 trees,您必须编写一个脚本来遍历树,找到包含文件的所有目录,然后运行这对 sed 命令对于每个叶目录。不知道该怎么做。 sed,至少在机器上,没有在递归搜索中替换文件的选项。如果你需要写这个,我会查找有关 unix find 命令的文档。
  • 包括示例。请注意,每个短语的末尾都有换行符,因此上述示例将出现在文件的 4 行中。
  • 嗨,再次!它现在有效,我必须在 -i 之后包含 -e,显然在 OSX 中必须这样做。我只想说非常非常感谢您的帮助和耐心!我学到了很多东西。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多