第n次出现正则表达式的sed打印行
发布时间:2020-12-14 05:50:38 所属栏目:百科 来源:网络整理
导读:假设我们有以下数据 B346879 length: 12 B34 L677 B111879 length: 32 B33 L677 B545879 length: 34 B34 L677 B344879 length: 98 B33 L677 B090879 length: 45 B33 L677 我正在寻找’B34’所以从这个系列我想要打印第1和第3行. 但如果我愿意的话: cat t.tx
假设我们有以下数据
B346879 length: 12 B34 L677 B111879 length: 32 B33 L677 B545879 length: 34 B34 L677 B344879 length: 98 B33 L677 B090879 length: 45 B33 L677 我正在寻找’B34’所以从这个系列我想要打印第1和第3行. cat t.txt | sed -n '/B34/p' | awk '{print $1","$4" "$5}' | sed 's/B//g' 第4行也将被打印,因为’B34’匹配’B344879的前3个字符.我知道像sed的’/ pattern / replacement / n’之类的东西,你只能替换正则表达式的第n次出现.但它如何与印刷一起使用.我试过像sed -n’/ B34 / 2p’这样的东西,但那是无效的. 解决方法
这可能适合你(GNU sed):
sed -rn 's/^s*(S+)s+(S+s+){2}(B34)s+(S+)/1,3 4/;T;s/B//g;p' file (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |