我有一个从互联网上保存的源文件,其中包含我想要从中提取数据的各种链接。例如https://blahblah.com/uniquetext
我在用着
grep -oP 'com\K\w+' source.txt > list.txt
但我只是得到一个空的文本文件。我到底做错了什么?我是否误解了该命令的工作原理?
我的输入文本(假设是源文件)非常混乱并且几乎无法读取,它是一个 .html 转换为 .txt,如果这有什么区别的话。
它看起来像什么:
gs="evt">window.open('https://twitter.com/warrenarend', '_blank');</script></button><button dojoType="dijit.form.Button" type="button">26. patriotpariah<script type="dojo/method" event="onClick" args="evt">window.open('https://twitter.com/patriotpariah', '_blank');</script></button><button dojoType="dijit.form.Button" type="button">27. teutates1989<script type="dojo
我想要的是:
twitter.com/patriotpariah
twitter.com/warrenarend
…
答案1
\w
匹配“单词”符号(字母、数字和下划线),但在您的示例中,/
其后com
不是:alnum:
,因此您的模式不匹配任何内容==空输出。
您可以添加/
到模式并查看发生了什么:
grep -oP 'com/\K\w+'
FYR-P
选项是实验性的,可以完成更多系统中意想不到的任务,因此您可以通过其他方式完成任务:
sed "/com/s/.*\/\(\w\+\).\?$/\1/"