使用Bash删除特定标记

时间:2013-09-09 07:24:27

标签: linux bash

我想将我的博客从WordPress转移到Pelican,但我仍然坚持使用自动脚本删除这些行?

[pro-player type="MP3"]http://domain/bla%20bla%20bla/a%20Lee%20yo%20-%20help.mp3[/pro-player]
[download id="79] 

我尝试过使用:

sed -e 's/[pro-player type="[]*"]\([^[]*\).*/\1/p' 

但没有运气。谢谢你的帮助。

3 个答案:

答案 0 :(得分:0)

如果你想过滤文件只获取URL(我假设你试过的正则表达式),你可以使用它:

cat file.txt | perl -n -e 'print $1 if /\](.*?)\[/'

输出:

http://domain/bla%20bla%20bla/a%20Lee%20yo%20-%20help.mp3

答案 1 :(得分:0)

在'sed'中,左括号引入了一个字符类,所以如果你想匹配它,你需要逃避它:

sed -e 's/\[pro-player type=[^\]*]\([^\]]*\)/\1/p'

我也更改了“mp3”的匹配逻辑。

答案 2 :(得分:0)

要从文件中删除包含[...]的行,请说:

sed '/^\[.*\]$/d' inputfile

这会删除以[开头并以]结尾的行。