请耐心等待我,因为我是新来的论坛,并在发布之前尝试进行我的研究。我要做的是使用sed
来查看文件的多行以及包含“CPU Usage”字样的任何行我希望它注释掉该行以及之后的19行。
示例file.txt
This is some random text CPU USAGE more random text
Line2
Line3
Line4
Line5
etc.
我希望sed
找到文本CPU使用情况的字符串并注释掉该行以及后面的19行
#This is some random text CPU USAGE more random text
#Line2
#Line3
#Line4
#Line5
#etc.
这就是我一直在尝试但显然它没有用,因为我在这里寻求帮助
sed '/\/(CPU Usage)s/^/#/+18 > File_name
sed: -e expression #1, char 17: unknown command: `^'
我希望能够在多个文件上使用它。非常感谢您提供的任何帮助!
答案 0 :(得分:4)
GNU sed
有一个非标准的扩展程序(好吧,它有很多非标准的扩展程序,但这里有一个与此相关的扩展名)允许/pattern/,+N
表示从匹配pattern
的行到该行加上N。
我不太确定您对sed
命令对模式的\/
部分的期望是什么,并且您在所显示的内容中错过了单引号,但这就是诀窍:
sed '/CPU Usage/,+19 s/^/#/'
如果您要覆盖原始文件,请添加-i .bak
(如果您不介意丢失原件,请添加-i
。)
如果您没有GNU sed
,现在可能是安装它的好时机。
答案 1 :(得分:1)
使用awk
awk '/CPU Usage/ {f=20} f && f-- {$0="#"$0}1' file
找到CPU Usage
后,设置标记f=20
如果标记f
为真,则递减直到0
并且每次都在行前添加#
并打印它。
答案 2 :(得分:0)
认为这应该有用,无法测试,如果有人发现错误,请告诉我:)
awk '/CPU Usage/{t=1}t{x++;$0="#"$0}x==19{t=0;x=0}1' file