编号线匹配使用SED的图案(Numbering lines matching the pattern

2019-07-29 09:16发布

我正在写,搜索匹配某种模式的行脚本。 我必须为这个脚本中使用SED。 这工作得很好,用于搜索和打印匹配行:

sed -n /PATTERN/p

不过,我也想打印行本身的前面匹配的行数。 我怎样才能做到这一点使用的sed?

Answer 1:

您可以使用grep

grep -n pattern file

如果使用=sed行号将被打印在单独的行,而不是在用于操纵模式空间可用。 但是,您可以通过管道输出到sed的另一个实例合并的行号,并将其应用到该行。

sed -n '/pattern/{=;p}' file | sed '{N;s/\n/ /}'


Answer 2:

=用于打印的行号。

sed -n /PATTERN/{=;p;}


Answer 3:

对于sed的,使用后获得行号

sed -n /PATTERN/= 


Answer 4:

切换到AWK。

BEGIN {
  ln=0
}

$0 ~ m {
  ln+=1
  print ln " " $0
  next
}

{
  print $0
}

...

awk -f script.awk -v m='<regex>' < input.txt


Answer 5:

使用Perl:

perl -ne 'print "$.: $_" if /regex/' input.file

$. 包含行号。 如果输入文件包含:

record foo
bar baz
record qux

这一个班轮: perl -ne 'print "$.: $_" if /record/' input.file会打印:

1: record foo
3: record qux

或者,如果你只是想行的总数匹配的模式使用:

perl -lne '$count++ if /regex/; END { print int $count }' input.file



Answer 6:

下面是最简单的方法:

awk '{print ln++  ":  "  $0 }' 


文章来源: Numbering lines matching the pattern using sed
标签: shell unix sed