我的文件中有一行[LocString getString:@" some string"];我试图使用grep所以它将所有出现的一些字符串复制到另一个文本文件。我知道有正则表达式模式,但谷歌搜索后我没有运气。这可能是一个简单的问题,这就是原因。有人知道用grep或sed做这个的方法吗?提前谢谢,因为我是新手。
答案 0 :(得分:0)
我会使用sed
:
sed -r 's/[^"]+"([^"]+)".*/\1/' original_file > new_file
基本上,像s
这样的s/search/replace/
命令会替换替换搜索的模式。搜索模式的工作方式如下:
[^"]+
匹配一个或多个不等于"
的字符 - 开头"
之前的部分。 "
与开头"
匹配。括号(...)
之间的模式引入了一个子模式,我们稍后会在替换中访问该值。 [^"]+
匹配一个或多个不等于"
的字符序列 - 引号之间的值。最后,我们将结束"
加上任何剩余的字符与行尾相匹配。
在替换模式中,我们使用子模式1的内容,即搜索模式匹配的引号之间的值。
如果您仅限于基本正则表达式,意味着-r
不起作用,您可以使用:
sed 's/[^"]\+"\([^"]\+\)".*/\1/' original_file > new_file