2014-07-12 40 views
1

請耐心等待,因爲我是新來的論壇,並試圖在發佈之前進行研究。我想要做的就是使用sed來查看文件的多行文本以及任何包含「CPU使用率」字樣的行,我希望它可以註釋掉該行,並且在此之後立即顯示19行。例如file.txt使用sed註釋掉包含特定字符串文本的行

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: `^' 

我想能夠在多個文件上使用它。任何幫助你可以提供非常感謝!

回答

3

GNU sed具有非標準擴展(好吧,它有很多不規範的擴展,但有一個是與此有關)允許/pattern/,+N從匹配pattern該行加N.

行的意思我不太清楚你希望你的sed命令做圖案的\/一部分,你缺少你什麼是一個單引號,但做的伎倆:

sed '/CPU Usage/,+19 s/^/#/' 

如果您想要覆蓋原始文件,請添加-i .bak(或只是-i,如果你不介意丟失原件)。

如果您沒有GNU sed,現在可能是安裝它的好時機。

0

認爲這應該工作,不能測試它,如果任何人發現不對勁只是讓我知道:)

awk '/CPU Usage/{t=1}t{x++;$0="#"$0}x==19{t=0;x=0}1' file 
1

這可以很容易地awk

awk '/CPU Usage/ {f=20} f && f-- {$0="#"$0}1' file 

做當CPU Usage被發現,設置標誌f=20
如果標誌f爲真,則遞減至0,並且每次都在行的前面添加#並打印出來。

相關問題