我有一个文本文件,其中包含试图从$$中提取的部分数据。我试图弄清楚应该在文件中找到这样的字符串的正则表达式是什么。
例如,文档具有以下数据。
This is the stackoverflow website. $$ I am looking for some web developers $$, $$ Fox jumps over the white dog $$.
对于上面的示例,输出应为。
答案 0 :(得分:2)
您可以将此gnu awk
与自定义RS
一起使用:
awk -v RS=' *\\$\\$ *' '!(NR % 2)' <<< "$str"
I am looking for some web developers
Fox jumps over the white dog
RS=' *\\$\\$ *'
将输入拆分为多个记录,其中$$
和任一侧的可选空格作为记录分隔符!(NR % 2)
打印一条偶数记录,即两边用$$
包围的文本。或者,该gnu grep
也可以工作:
grep -oP '(?<=\$\$ ).*?(?= \$\$)' <<< "$str"
答案 1 :(得分:1)
使用GNU grep:
$ grep -Po '\$\$.*?\$\$' file.txt
$$ I am looking for some web developers $$
$$ Fox jumps over the white dog $$
使用-P
使用Perl正则表达式,因此我们可以使用?
修饰符使.*
变得非贪婪。使用-o
在单独的行上打印出每个匹配的子字符串。
答案 2 :(得分:-1)
如果您选择Perl
,请尝试:
perl -0777 -ne 'while (/\$\$(.+?)\$\$/sg) {print $1, "\n"}' file.txt
尽管我不确定,它允许感兴趣的字符串跨越行