Grep:重复多个匹配的行号

时间:2015-08-21 15:57:40

标签: macos unix grep

以下是我尝试做的一个简单示例。

echo "1234567" | grep -inoE "12|34|56"

以上命令提供以下输出:

1:12
34 
56

意思是它在第1行找到3个匹配:12,34和56.

但是,我希望输出显示每行的数字:

1:12
1:34
1:56

我使用grep(BSD grep)2.5.1-FreeBSD

1 个答案:

答案 0 :(得分:1)

由于您使用的是composer install而不是BSD grep,因此无效。

我建议你将结果传递给一个重新映射的GNU grep

awk

这会将行号存储在awk -F: 'NF==2{line=$1} NF==1{$0=line FS $0}1' a 变量中,并将其添加到“孤儿”行的输出上。

如果比赛本身包含一些冒号,则需要额外的按摩,所以如果是这种情况,请告诉我们。

测试

line