【发布时间】:2016-05-01 05:05:46
【问题描述】:
我有一个看起来像这样的文件
title="title1"
artist="artist1"
title="title2"
artist="artis2"
title="title3"
artist="artist3"
等等
这个命令perl -pe 's/title="(.*?)"\n//ig' list.txt
没有像我希望的那样工作。如果我一个人这样做,我只会得到艺术家的台词,但是如果我这样做
perl -pe 's/title="(.*?)"\nartist//ig' list.txt
根本不匹配。
我尝试过使用和不使用 /g 并尝试添加 /m
我查看了 nano 中的文件,在每行的最后一个 " 和下一行的 "artist" 之间没有看到任何额外的字符。
有人知道我做错了什么吗? (我使用的是 perl 而不是 sed,因为生成此列表的正则表达式使用负前瞻)。
我的目标是能够使用像下面这样的行perl -pe 's/title="(.*?)"\nartist="(.*?)"(?:\n|$)/\2 - \1/ig' list.txt
这会输出类似
artist1 - title1
artist2 - title2
artist3 - title3
【问题讨论】:
-
你的预期输出是什么?
-
我将在帖子中编辑一个附加部分
-
在
vim中打开它并发出命令:set list以查看是否有其他未打印的字符,eg Windows 样式的换行符,\r\n. -
尝试用
-0777slurp文件