1. 程式人生 > >linux grep sed awk

linux grep sed awk

方法 min 表達 shell腳本 轉義 庫存量 表示 自己的 是什麽

$ grep ‘test’ d*
顯示所有以d開頭的文件中包含 test的行。

$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。

$ grep ‘[a-z]\{5\}’ aa
顯示所有包含每個字符串至少有5個連續小寫字符的字符串的行。

$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,則es就被存儲到內存中,並標記為1,然後搜索任意個字符(.*),這些字符後面緊跟著 另外一個es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號進行轉義,直接寫成’w(es)t.*\1′就可以了

不管當前路徑是什麽,如果想要在自己的根目錄$HOME中查找文件名符合*.txt的文件,使用~作為 ‘pathname‘參數,波浪號~代表了你的$HOME目錄。

$ find ~ -name "*.txt" -print

想要在當前目錄及子目錄中查找所有的‘ *.txt’文件,可以用:

$ find . -name "*.txt" -print

想要的當前目錄及子目錄中查找文件名以一個大寫字母開頭的文件,可以用:

$ find . -name "[A-Z]*" -print

想要在/etc目錄中查找文件名以host開頭的文件,可以用:

$ find /etc -name "host*" -print

想要查找$HOME目錄中的文件,可以用:

$ find ~ -name "*" -print 或find . -print

要想讓系統高負荷運行,就從根目錄開始查找所有的文件:

$ find / -name "*" -print

如果想在當前目錄查找文件名以兩個小寫字母開頭,跟著是兩個數字,最後是.txt的文件,下面的命令就能夠返回例如名為ax37.txt的文件:

$find . -name "[a-z][a-z][0-9][0-9].txt" -print

find命令的例子;

1、查找當前用戶主目錄下的所有文件:

下面兩種方法都可以使用

$ find $HOME -print
$ find ~ -print

2、讓當前目錄中文件屬主具有讀、寫權限,並且文件所屬組的用戶和其他用戶具有讀權限的文件;

$ find . -type f -perm 644 -exec ls -l {  } \;

3、為了查找系統中所有文件長度為0的普通文件,並列出它們的完整路徑;

$ find / -type f -size 0 -exec ls -l {  } \;

4、查找/var/logs目錄中更改時間在7日以前的普通文件,並在刪除之前詢問它們;

$ find /var/logs -type f -mtime +7 -ok rm {  } \;

5、為了查找系統中所有屬於root組的文件;

$find . -group root -exec ls -l {  } \;

6、find命令將刪除當目錄中訪問時間在7日以來、含有數字後綴的admin.log文件。

該命令只檢查三位數字,所以相應文件的後綴不要超過999。先建幾個admin.log*的文件 ,才能使用下面這個命令

$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok rm {  } \;

7、為了查找當前文件系統中的所有目錄並排序;

$ find . -type d | sort

和sed類似,pattern是正則表達式,actions是一系列操作。awk程序一行一行讀出待處理文件,如果某一行與pattern匹配,或者滿足condition條件,則執行相應的actions,如果一條awk命令只有actions部分,則actions作用於待處理文件的每一行。比如文件testfile的內容表示某商店的庫存量:

ProductA  30
ProductB  76
ProductC  55

打印每一行的第二列:

$ awk ‘{print $2;}‘ testfile
30
76
55

自動變量$1、$2分別表示第一列、第二列等,類似於Shell腳本的位置參數,而$0表示整個當前行。再比如,如果某種產品的庫存量低於75則在行末標註需要訂貨:

$ awk ‘$2<75 {printf "%s\t%s\n", $0, "REORDER";} $2>=75 {print $0;}‘ testfile
ProductA  30    REORDER
ProductB  76
ProductC  55    REORDER




linux grep sed awk