我正在编写搜索与某种模式匹配的行的脚本。对于此脚本,我必须使用sed。这样可以很好地搜索和打印匹配的行:
sed -n /PATTERN/p
但是,我还想在该行前面打印匹配的行号。我如何使用sed来做到这一点呢?
kuuvgm7e1#
您可以使用grep:
grep
grep -n pattern file
如果在sed中使用=,行号将打印在单独的行上,并且在模式空间中不可用于操作。但是,您可以将输出通过管道传递到sed的另一个示例,以合并行号和它所应用的行。GNU sed:
sed
=
sed -n '/pattern/{=;p}' file | sed '{N;s/\n/ /}'
MacOS sed:
sed -n -e '/pattern/{=' -e 'p' -e '}' file | sed -e '{N' -e 's/\n/ /' -e '}'
azpvetkf2#
=用于打印行号。
sed -n /PATTERN/{=;p;}
dbf7pr2w3#
对于sed,使用以下命令获取行号
sed -n /PATTERN/=
sauutmhj4#
切换到awk。
BEGIN { ln=0 } $0 ~ m { ln+=1 print ln " " $0 next } { print $0 }
..。
awk -f script.awk -v m='<regex>' < input.txt
4条答案
按热度按时间kuuvgm7e1#
您可以使用
grep
:如果在
sed
中使用=
,行号将打印在单独的行上,并且在模式空间中不可用于操作。但是,您可以将输出通过管道传递到sed的另一个示例,以合并行号和它所应用的行。GNU
sed
:MacOS
sed
:azpvetkf2#
=
用于打印行号。dbf7pr2w3#
对于sed,使用以下命令获取行号
sauutmhj4#
切换到awk。
..。