我有像这样的文字行
blahblah"word1"blahblah"word2"blahblah"word3"
我只想要引号之间和没有引号的文本。我可以做一个awk和我们“作为一个分隔符。然后得到每一秒匹配。但是,有什么方法我可以使用awk(或其他命令)返回引号之间的单词?所以我会回来word1,word2,word3?
谢谢,
答案 0 :(得分:1)
你走了:
echo 'blahblah"word1"blahblah"word2"blahblah"word3"' | perl -ne 'print map("$_\n", m/"([^"]*)"/g)'
答案 1 :(得分:1)
取决于您正在使用的语言,但正则表达式将是:
(?<=^(("[^"]*){2})*")[^"]+(?=")
该示例将匹配“s之间的所有内容。如果您希望它仅匹配”s之间的单词,请使用:
(?<=^(("[^"]*){2})*")\b+(?=")
主要区别在于第二个例子,不允许使用空格和大多数特殊字符。在第一个例子中,除了“s”之外的所有字符都将被允许在“s”之间。这包括新行。
答案 2 :(得分:1)
不健壮,但有趣:
sed -E 's/(^|")[^"]*("|$)/ /g'