首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sed打印出行号

Sed打印出行号
EN

Unix & Linux用户
提问于 2019-06-20 14:59:46
回答 3查看 43K关注 0票数 18

这是我的样本文件

代码语言:javascript
复制
user@linux:~$ cat file.txt 
Line 1
Line 2
Line 3
Line 4
Line 5
user@linux:~$ 

我可以用grep -A2 'e 2' file.txt打印第2-4行。

代码语言:javascript
复制
user@linux:~$ grep -A2 'e 2' file.txt 
Line 2
Line 3
Line 4
user@linux:~$ 

我也可以用grep -n打印出行号。

代码语言:javascript
复制
user@linux:~$ grep -nA2 'e 2' file.txt 
2:Line 2
3-Line 3
4-Line 4
user@linux:~$ 

而且,同样的事情也可以用sed -n 2,4p file.txt来完成。

代码语言:javascript
复制
user@linux:~$ sed -n 2,4p file.txt 
Line 2
Line 3
Line 4
user@linux:~$ 

但我不知道如何用sed打印行号

是否可以用sed打印出行号?

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2019-06-20 15:11:09

AWK:

代码语言:javascript
复制
awk 'NR==2,NR==4{print NR" "$0}' file.txt

sed:

代码语言:javascript
复制
sed '2,4!d;=' file.txt | sed 'N;s/\n/ /'

格伦杰克曼's sed粘贴:

代码语言:javascript
复制
sed '2,4!d;=' file.txt | paste -d: - -

巴特's Perl版本:

代码语言:javascript
复制
perl -ne 'print "$. $_" if 2..4' file.txt

catsed:

代码语言:javascript
复制
cat -n file.txt | sed -n '2,4p'

也可以看到这个回答类似的问题。

一点的解释:

  • sed -n '2,4p'sed '2,4!d'做了同样的事情:第一个只在第二个和第四个(包括)之间打印行,后者“删除”除这些行之外的每一行。
  • sed =打印行号,后面跟着换行符。见手册
  • 最后一个示例中的cat -n可以被nlgrep -n ''替换。
票数 25
EN

Unix & Linux用户

发布于 2019-06-20 15:37:56

我已经做了下面提到的两种方法

Method1

代码语言:javascript
复制
awk '/2/{x=NR+2}(NR<=x){print NR"-"$0 }' filename

命令

代码语言:javascript
复制
2-Line 2
3-Line 3
4-Line 4

Method2

代码语言:javascript
复制
sed -n '{;=;p}' filename| sed "N;s/\n/ /g"| sed -n '/2/,+2p'

输出

代码语言:javascript
复制
2 Line 2
3 Line 3
4 Line 4
票数 3
EN

Unix & Linux用户

发布于 2022-08-19 21:49:22

这不正是nl所要做的吗?

nl-线编号滤波器

然后,您可以使用任何方法,您希望选择行。

(编辑)

按照POSIXnl会对空行进行编号:

代码语言:javascript
复制
$ nl -b a example
     1  line1
     2  
     3  line3
     4  
     5  line5
     6  
代码语言:javascript
复制
$ nl -b a < example | sed -n '2,4p'
     2  
     3  line3
     4  

如果只想计数输出,则可以倒转管道。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/526064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档