歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux-35-liunx基礎重要命令

詳解awk命令(接例11):

1.命令1:awk ‘{if (NR>19&&NR<31) print $0}’ ett.txt

其中NR是行號,$0表示所有行內容(如果只輸出第一行就是$1,第二行就是$2……所有行就是$0),所以該命令就是先篩選出ett.txt文件內行號大於19而且行號小於31的所有行,然後輸出整行,

\

 

2.命令2:awk ‘{if(NR==19) print $0}’ ett.txt

打印輸出ett.txt文件中第19行內容,


\

 

【sed和awk總結】

sed擅長打印輸出行

awk擅長打印輸出列

 

例12.將linux系統根目錄及其子目錄下所有名稱為ett.txt的文件中包含haha的字符串全部替換為xixi。

解答:

(1)將字符串haha追加到ett.txt中,


\

 

查看ett.txt文件內容,發現原來的1~100自然數序列沒了,現在只有字符串haha,


\

 

將ett.txt文件拷貝到/etc目錄和/opt目錄下,


\

 

那麼此時linux系統內一共有3個ett.txt文件(根目錄下1個,/etc目錄下1個,/opt目錄下1個,一共3個),

 

(2)采用sed s#haha#xixi#g ett.txt命令修改,其中s表示編輯替換,g表示全部替換,前兩個#之間是待修改內容,後兩個#之間是修改結果,即#待修改內容#修改結果#,


\

 

查看ett.txt文件,


\

 

發現上面只是改了打印輸出內容,而原文件裡面內容沒有修改,

 

(3)只需要在上面命令加上-i即可,-i表示修改文件內容,即用如下命令:

sed -i s#haha#xixi#g ett.txt


\

 

查看ett.txt文件,


\

 

發現ett.txt文件內容已被修改,

 

(4)如何將linux系統內的3個ett.txt一起修改內容呢?可以借助find命令,首先我們用find命令從根目錄開始查找所有文件名為ett.txt的文件,


\

 

(5)綜上,本題答案為:

find / -type f –name “ett.txt” | xargs sed –i s#haha#xixi#g


\

 

其中管道|之前是從根目錄開始查找出當前系統內所有名稱為ett.txt的文件,管道|之後是將查詢到的所有文件中haha改為xixi,

查詢修改結果,


\

 

修改成功。

Copyright © Linux教程網 All Rights Reserved