grep,返回“字符之间的字符串

时间:2014-03-30 13:56:21

标签: linux command-line grep

我有一个看起来像的文件:

Data.s "intro.png"
Data.s "extended.png"
Data.s "animationen.png"
Data.s "buttons.png"

我需要只返回"字符内的字符串。

我试过了:

grep '"(.*)"' filename

什么都不返回。 当我删除括号时,我得到匹配的每一行 我只需要"个字符内的字符串。

3 个答案:

答案 0 :(得分:0)

您可以使用awk

awk -F\" '/Data.s/ {print $2}' file
intro.png
extended.png
animationen.png
buttons.png

答案 1 :(得分:0)

使用GNU grep

grep -oP '(?<=").*?(?=")' file
intro.png
extended.png
animationen.png
buttons.png

答案 2 :(得分:0)

grep不支持捕获群组。
您将需要使用-P标志,它通常打开grep的Perl RegExp引擎。

由于1_CR已经提到了这个选项,我会提到一个不同的工具。

sed

$ sed 's/^.*"\(.*\)"$/\1/' /tmp/so.txt

用适当的文件路径替换/tmp/so.txt。