首页 > 解决方案 > 如何使用 Grep 查找以正则表达式结尾的短语?

问题描述

我有一个大文本文件,我正试图将其分成 CSV。现在没有换行符,但我想分隔的每一行都以正则表达式url 结尾是 \S+

我正在使用 bbedit 来查找并希望提取这些行。我最初尝试在找到该正则表达式后换行,但是如果我将url is \S+\n放入替换部分,它会按字面意思进行,并且我的 url 消失了。我试过的一些表达方式:

\burl is \S+
\b.*url is \S+ 
$url is \S+ 
.*$url is \S+ 
url is \S+ $
url is \S+\$

每一行的语法是

<message>, post has <#> likes, profile is <name>, url is <characters> 

所以文件的一个例子是:

message 1 here, post has 37 likes, profile is name1, url is 8gjEobL1U4 message 2, some messages have commas in them, post has 182 likes, profile is name2, url is 89PI4JOscv here is another message, post has 105 likes, profile is someoneelse, url is 89baAOzDLj

标签: regexgrepbbedit

解决方案


使用 GNU grep:

grep -oP '.*? url is [^ ]+ *' file

输出:

消息 1 在这里,帖子有 37 个赞,个人资料是 name1,url 是 8gjEobL1U4
留言2,有些留言有逗号,post有182个赞,profile是name2,url是89PI4JOscv
这是另一条消息,帖子有 105 个赞,个人资料是其他人,网址是 89baAOzDLj

推荐阅读