11

在我使用这个的那一刻,试图在双引号内 grep 一个字符串

grep user file | grep -e "[\'\"]"

这将到达我需要的文件部分并突出显示双引号,但它不会在双引号中给出刺痛

4

4 回答 4

19

尝试这样做:

$ cat aaaa
foo"bar"base
$ grep -oP '"\K[^"\047]+(?=["\047])' aaaa
bar

我使用先进的正则表达式技术环顾四周。

如果你也想要引号:

$ grep -Eo '["\047].*["\047]'
"bar"

笔记 :

\047

是单引号的八进制 ascii 表示

于 2013-03-15T14:37:42.827 回答
8
$ cat aaaa
foo"bar"base

$ grep -o '"[^"]\+"'
"bar"
于 2013-03-15T14:43:48.723 回答
3

尝试:

grep "Test" /tmp/junk | tr '"' ' '

这将从 grep 的输出中删除引号

或者您可以尝试以下方法:

grep "Test" /tmp/junk | cut -d '"' -f 2

这将使用引号作为分隔符。只需指定要选择的字段。这使您可以挑选所需的信息。

于 2013-03-15T14:41:18.183 回答
0

这对我有用。这也将打印包括双引号的数据。

 grep -o '"[^"]\+"' file.txt

如果我们想在没有双引号的情况下打印,那么我们需要将 grep 输出通过管道传递给 sed 命令。

grep -o '"[^"]\+"' file.txt | sed 's/"//g'
于 2018-11-30T05:54:21.130 回答