我正在使用Perl从以下文本数据中提取/重新格式化文本:
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
我想要
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
成为
Blandfärs 3 kg 66,69 kr 200,07 kr
两行之间有一些东西,但是用Perl捕获是不可能的,任何建议(已经使用/测试过了。\ f \ r \ n [x0A] [x0D])???
答案 0 :(得分:0)
你可以尝试下面的Perl单线命令。
$ cat file
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs
"Behöver ca 3 kg köttfärs. sv" 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
$ perl -0777pe 's/\n+"[^"]*"//g' file
Bryggkaffe 6 st 27,67 kr 166,03 kr
Blandfärs 3 kg 66,69 kr 200,07 kr
Banan EKO 6 kg 22,54 kr 135,23 kr
或强>
perl -00pe 's/\n+"[^"]*"//g' file
答案 1 :(得分:0)
你可以使用简单的单行:
perl -p00e's/\R"[^"]*"//' file.txt
如果您希望“安全”删除引用的字符串,可以使用Text::Balanced
标准模块生成正则表达式:
perl -MText::Balanced=gen_delimited_pat -p00e'BEGIN{$r=gen_delimited_pat(q{"})}s/\R$r//' file.txt
或插入gen_delimited_pat
perl -p00e's/\R"[^\\"]*(?:\\.[^\\"]*)*"//' file.txt