如何使用包含“引号”的模式进行grep?

时间:2015-01-27 07:13:51

标签: bash shell sed grep double-quotes

我想要一个包含引号的行,更具体地说,我想要grep包含“mark”的行。

更具体地说,我想要grep这样的行:

#include "something.h"
then pipe into sed to just return something.h

3 个答案:

答案 0 :(得分:3)

单个grep将完成这项工作。

grep -oP '(?<=")[^"]*(?=")' file

示例:

$ echo '#include "something.h"' | grep -oP '(?<=")[^"]*(?=")'
something.h

答案 1 :(得分:1)

sed '#n
/"/ s/.*"\([^"]*\)" *$/\1/p' YourFile

使用sed不需要grep(除非需要在大文件上执行)。 Sed可以直接过滤和调整内容

在您的情况下,/"/肯定会修改/#include *"/

如果引用

之间有多个字符串
sed '#n
/"/ {s/"[^"]*$/"/;s/[^"]*"\([^"]*\)" */\1/gp;}' YourFile

答案 2 :(得分:0)

您可以使用awk获取包含的文件名:

awk -F'"' '{print $2}' file.c
something.h