正则表达式 – 如何按部分grep?
发布时间:2020-12-14 05:49:52 所属栏目:百科 来源:网络整理
导读:我有一个像这样结构的文件: BOF-------Title1-------stuff heresome stuff-------Title2-------extra thingsextra thingsextra things-------Title3-------and some stuff here...-------Title4-------stuffEOF 现在我想做这样的事情: grep-by-section KEY
我有一个像这样结构的文件:
BOF -------Title1------- stuff here some stuff -------Title2------- extra things extra things extra things -------Title3------- and some stuff here ... -------Title4------- stuff EOF 现在我想做这样的事情: grep-by-section KEYWORD DELIMITER my-file 以便 grep-by-section "some" "^---" my-file 输出 -------Title1------- stuff here some stuff -------Title3------- and some stuff here 我想找到一个特定的关键字,对于每个发现我想在已知的分隔符之间输出整个块.我怎样才能做到这一点?我在这里失败了. 这里的分隔符是“——”,但可能是[0-9] {8}格式的数字之类的东西. 我无法解决的类似问题是输出块的内容,而不是输出块的标题. 使用perl比使用sed更容易解决 解决方法#!/usr/bin/perl my ($search,$del) = splice(@ARGV,2); local $/; while (<>) { for (/($del(?:(?!$del).)*)/smg) { print if /$search/sm; } } 笔记: > local $/导致以下readline一次读取一个文件而不是一次读取一行.>(?:(?!STRING).)*是STRING,因为[^ CHAR] *是CHAR. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |