正则表达式从文件中提取/输出引用的字符串

时间:2015-04-25 05:17:27

标签: regex bash shell sed grep

我写了一个简单的正则表达式来输出文件中引用的字符串

cat mobydick.txt |  while read line; do echo -n "$line "; done | grep -oP '[^"]*"\K[^"]*'

这是我到目前为止所拥有的

例如,当我在这个文件mobydick.txt上运行这个单行时,我得到一行代码而不是新行分隔的字符串。

有人可以帮我处理我的剧本吗?

预期输出 - >当上面的脚本在mobydick.txt上运行时 “从我第二十五年开始我的生活。”
“叫我以实玛利。”

上面的输入文件可以从这个URL

下载

1 个答案:

答案 0 :(得分:1)

使用GNU grep(1)(grep(1)的其他版本没有-P):

tr '\n' ' ' <mobydick.txt | grep -P -o '(?<=\s)"[^"]+"(?=\s)'

更准确,使用pcregrep(1):

pcregrep -M -o '(?<=^|\s)"[^"]+"(?=$|\s)' mobydick.txt