我想要一个包含引号的行,更具体地说,我想要grep包含“mark”的行。
更具体地说,我想要grep这样的行:
#include "something.h"
then pipe into sed to just return something.h
答案 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