grep -P 'com\K\w+' 无输出

grep -P 'com\K\w+' 无输出

我有一个从互联网上保存的源文件,其中包含我想要从中提取数据的各种链接。例如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/" 

相关内容