shell腳本修改文本中匹配行以前的行的方法

原創文件,歡迎閱讀,禁止轉載。this

例子中是把 finish 前一行的 "yes" 改爲 "YES"
有一個方法就是利用sed+awk一塊兒來完成。spa

zjk@zjk:~$ cat a.txt
line 0 is yes
line 1 is yes
line 2 is yes
line 3 is yes
finish line
this line is no
this line is no
#//用awk找到匹配行號算出要修改的行
zjk@zjk:~$ awk '/finish/{print NR-1}' a.txt
4 #//用sed修改這行
zjk@zjk:~$ sed "4 s/yes/YES/" a.txt
line 0 is yes
line 1 is yes
line 2 is yes
line 3 is YES
finish line
this line is no
this line is no

這有什麼實際用處呢?好比我要在某啓動腳本的exit前修改兩行代碼,就須要這麼作。code

原創文件,歡迎閱讀,禁止轉載。blog

相關文章
相關標籤/搜索