我想提取写在文件中的内容。我们举一个例子
{{{
How
R
U
}}}
{{{ Hi }}}
我想像这样打印输出
How
R
U
Hi
答案 0 :(得分:2)
嗯,这不是regex
这是使用gawk
多字符RS
。
awk -v RS='}}}|{{{' 'NF' inputfile
How
R
U
Hi
您可以使用pipe
这样的sed -r 's/^ +//g'
命令来删除行开头的额外空格。
答案 1 :(得分:0)
通过使用正则表达式,这变得很棘手,主要是因为grep
或awk
似乎不支持lookahead。
要仅提取或匹配大括号内的文本,可以使用此正则表达式:https://regex101.com/r/ASFIFa/1
[^{\}]+(?=})
因此,您可以尝试ag - The Silver Searcher,这样会产生您所需的输出:
$ ag -o '[^{\}]+(?=})' input.txt
删除前导空格:
$ ag -o '[^{\}]+(?=})' input.txt | sed 's/^ *//'
答案 2 :(得分:0)
使用sed
sed '/{{{/!d;:A;/\}\}\}/!{N;bA};s/{{{//;s/}}}//;s/ *//g' infile
或者
sed -E '/\{{3}/!d;:A;/\}{3}/!{N;bA};s/\{{3}| *|\}{3}//g' infile