以编程方式删除osx终端中2个字符之间的所有文本

时间:2014-12-08 18:10:36

标签: macos terminal

我有一千个txt文件

1.txt
2.txt
3.txt

在每个文件中,我的文本中有几次标记:

{somethinghere...blablabla} than the text I want to keep than again {somethinghere...blablabla}

我在mac osx命令行中不是很实用,有人可以帮我写一个命令打开每个文件,解析它,并删除两个包含的所有文本&#34; {&#34;?< / p>

要明确:

首先,我需要打开每个文件,而不是解析文本。当循环找到&#34; {&#34;它开始删除,直到找到一个&#34;}&#34;。完成解析后,它会保存并关闭文件。这就是我需要做的事情。

感谢

1 个答案:

答案 0 :(得分:1)

 $ sed -i.bak -e 's@{[^}]*}@@g' *.txt
  • -i.bak制作每个修改过的文件的备份副本。如果您不想备份,请在OsX上使用-i''(Linux上不需要引号)
  • 在替换中,分隔符可以是/之外的另一个字符,在此我选择@,因此:s@<REGEX>@<REMPLACEMENT>@(替换的基本形式为s///
  • 在正则表达式中,我们使用{搜索文字}以及所有[^}]*表示0或更多次出现。最后,我们搜索结束},我们将没有任何内容替换匹配的部分,因此删除匹配的部分
  • g修饰符@the end不仅意味着一个匹配,而且意味着所有