2011-10-11 72 views
0

如何选择双引号中的文本?选择引号中的文本

# cat list.txt 
File "abc.txt" not found. 

我只想返回的abc.txt 我不知道这是实现这一目的的最佳工具。

回答

1

要找到双引号内的所有文本,请尝试此操作。

grep -o '"[^"]*"' list.txt 

单引号是为了防止来自shell的模式;实际模式表示匹配一个双引号,后面跟着一个不是双引号的字符序列,接着是另一个双引号。 -o选项至grep表示仅打印匹配项(默认情况下在模式匹配时打印整行)。

+0

而且我也想删除双引号。因此,而不是“abc.txt”它应该只返回abc.txt – shantanuo

0
kent$ echo 'File "abc.txt" not found.'|sed -r 's/.*"([^"]*)".*/\1/g' 
abc.txt 
+0

此如果有几个只会提取一次出现。 – tripleee

1
perl -nle'print $1 while /"([^"]*)"/g' list.txt 

随着GNU的grep如果你有每行一个发生:

grep -Po '(?<=")[^"]*(?=")' list.txt 
0
echo 'File "abc.txt" not found.' | awk '{print substr($2,2,length($2)-2)}'