LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 273|回复: 0

打印行号编辑命令

[复制链接]
发表于 2024-1-6 19:08:56 | 显示全部楼层 |阅读模式

打印行号编辑命令
跟在地址后面的等号”=”用来打印被匹配的行的行号,除非抑制行的自动输出,行号和行本身将被打印,语法如下:

[line-address]=

该命令不能对一个范围内的行做操作

我们可以使用该命令来打印源文件中某些行,比如,下面的脚本会打印源文件中for语句所在的行号和行本身


#要处理的文本at.txt
for i in {1..5}
do
  for i in {1..5} ;
  do
  echo "haha"
  done
    echo i
done
#sed脚本内容
/ *for/{
  =
  p
}
#执行处理
[root@test ~]# sed -nf sed.txt at.txt
1
for i in {1..5}
3
  for i in {1..5} ;


读取下一行编辑命令(n)用于读取输入的下一行到模式空间,语法如下:

[address]n

读取下一行命令(n)改变了正常的流控制,导致输入的下一行取代了模式空间中的当前行,脚本中的后续命令应用于替换后的行,而不是当前行。如果没有默认输出,那么在替换发生之前会打印当前行。

下面是一个例子,脚本的作用是删除From之后的一行空格


#要处理的文本at.txt
From:zhangsan@163.com

To:test
Subject:Test

end
#sed脚本
/From/{
  n
  /^$/d
}
#处理过程
[root@test ~]# sed -f sed.txt at.txt
From:zhangsan@163.com
To:test
Subject:Test

end
在sed脚本中,出现在读取下一行命令之前的命令不会应用于模式空间中新的输入行,出现在后面的命令也不应用与模式空间中旧的输入行。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表