尝试使用grep将所有出现的带引号的字符串复制到另一个文件

时间:2015-07-29 16:13:44

标签: bash sed grep

我的文件中有一行[LocString getString:@" some string"];我试图使用grep所以它将所有出现的一些字符串复制到另一个文本文件。我知道有正则表达式模式,但谷歌搜索后我没有运气。这可能是一个简单的问题,这就是原因。有人知道用grep或sed做这个的方法吗?提前谢谢,因为我是新手。

1 个答案:

答案 0 :(得分:0)

我会使用sed

sed -r 's/[^"]+"([^"]+)".*/\1/' original_file > new_file

基本上,像s这样的s/search/replace/命令会替换替换搜索的模式。搜索模式的工作方式如下:

[^"]+匹配一个或多个不等于"的字符 - 开头"之前的部分。 "与开头"匹配。括号(...)之间的模式引入了一个子模式,我们稍后会在替换中访问该值。 [^"]+匹配一个或多个不等于"的字符序列 - 引号之间的值。最后,我们将结束"加上任何剩余的字符与行尾相匹配。

在替换模式中,我们使用子模式1的内容,即搜索模式匹配的引号之间的值。

如果您仅限于基本正则表达式,意味着-r不起作用,您可以使用:

sed 's/[^"]\+"\([^"]\+\)".*/\1/' original_file > new_file