linux - grep 对返回文本的限制

标签 linux unix grep

我有一个要搜索的站点地图。问题是如果我执行 grep,它会返回整个文件,因为其中没有空格:

rl><loc>http://www.hulu.com/watch/5564</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5560</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5559</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5548</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5547</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5544</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5532</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5531</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5530</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5529</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5528</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5527</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5526</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5525</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5417</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5416</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5415</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5414</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5263</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5262</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5261</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5136</loc><changefreq>daily</changefreq></url><url><loc>http://www.hulu.com/watch/5135</loc><changefreq>daily</changefreq></url><url><l

有没有办法让 grep 只在搜索匹配之前/之后提取一定数量的字符?

我目前在做:

$ grep -r '/23407' ./

最佳答案

使用 -o 选项,您只会得到匹配项本身;要在匹配前后获取一些字符,您可以只匹配任何字符——例如,对于您的示例字符串,匹配存在的匹配前后 10 个字符:

$ grep -o '.\{10\}/5135.\{10\}' <<< "$string"
.com/watch/5135</loc><cha

关于linux - grep 对返回文本的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35564564/

相关文章:

linux - 从 bash 中的文件行获取字符串

linux - 在没有运行 X 服务器的情况下使用协同作用的方法?

Linux : what is the order of execution of *. 自动启动中的桌面文件

linux - "-e $ar"、 "3<&0 "、 "0<$Arq"、 "exec 0<&3"做什么?我已经搜索过,但没有找到合适的

function - Trap ERR 异常行为(无限循环)取决于函数的定义方式

linux - Unix 中的 Grep + SQL 中的 like + SQL 中的分组依据

linux - Makefile 中的 MD5SUM

regex - 将单词的一部分分配给变量

windows - 我可以在名称依赖于操作系统的 git 中对路径进行版本控制吗

java - GREP 如何只检索包含指定字母的单词?