我有一个文件看起来像这样:
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和没有/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
,以查看是否存在其他未打印字符,例如Windows风格的换行符\r\n
。 - Andrew Cheong