我有一份下列格式的清单77 Infinite Dust
4 Illusion Dust
12 Dream Shard
29 Star's Sorrow
我需要把这个改成:77<a href="http://www.wowhead.com/?search=Infinite Dust">Infinite Dust</a>
4<a href="http://www.wowhead.com/?search=Illusion Dust">Illusion Dust</a>
12<a href="http://www.wowhead.com/?search=Dream Shard">Dream Shard</a>
29<a href="http://www.wowhead.com/?search=Star's Sorrow">Star's Sorrow</a>
我已设法使此列表的格式正确,只是使用以下方法丢失了数字:
sed 's|^[0-9]*.|<a href="http://www.wowhead.com/?search=|g' filename | sed 's|$|">|g' | sed 's#<a[ \t][ \t]*href[ \t]*=[ \t]*".*search=\([^"]*\)">#&\1</a>#'
但我想不出如何让它把数字放在列表前,感谢任何帮助,谢谢!
最佳答案
如果你告诉我们你最终想要做什么,我们会告诉你一个更简单的方法。
正如我在最后一个问题的last question中所说,您可以记住模式的一部分,并将该部分称为sed
,\1
,等等。
您需要分别记住数字和行的其余部分,所以模式是:\2
:基本上是多个数字的零,后跟空格,后跟任意数量的字符。
因此您的\([0-9]*\) \(.*\)
命令变成:
`sed -e 's|\([0-9]*\) \(.*\)|\1 <a href="http://www.wowhead.com/?search=\2">\2</a>|'
这个命令可以一次完成你想要的一切。
关于linux - 使用sed/awk的Linux文本文件操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2102684/