Linux文本內容管理和文件查找 1、文本內容管理命令 1.1文本內容排序 sort //預設升序排序,不是按數值大小排序的 -n //根據數值大小進行排序 -r //逆序排序 -t //欄位分隔符 -k //以哪個欄位為關鍵字進行排序 -u //去重,排序後相同的行只顯示一次 -f //排序時忽略 ...
Linux文本內容管理和文件查找
1、文本內容管理命令
1.1文本內容排序
sort //預設升序排序,不是按數值大小排序的
-n //根據數值大小進行排序
-r //逆序排序
-t //欄位分隔符
-k //以哪個欄位為關鍵字進行排序
-u //去重,排序後相同的行只顯示一次
-f //排序時忽略字元大小寫
uniq //將重覆的行只顯示一遍(連續且完全相同方為重覆)
-c //顯示文件中行重覆的次數
-d //只顯示重覆的行
-u //只顯示未重覆的行
1.2文本內容統計
//文本內容統計
wc(word count)
-l //顯示行數
-w //顯示單詞數
-c //顯示位元組數
//文件大小統計
du //查看文件或目錄占用的磁碟空間大小
-h //以人類友好的方式顯示大小
-s //顯示總的占用空間大小
//磁碟空間統計
df //報告文件系統磁碟空間使用情況
-h //以人類友好的方式顯示大小
-i //顯示inode信息
-T //查看文件系統類型
1.3文本內容過濾
cut按列截取文本內容
cut //截取文本內容
-d '' //指定欄位分隔符,預設是空格
-f //指定要顯示的欄位
-f 1,3 //顯示第1個欄位和第3個欄位
-f 1-3 //顯示第1個欄位到第3個欄位
awk文本和數據進行處理的編程語言
awk //awk文本和數據進行處理的編程語言
語法:awk [選項] '匹配模式 {執行動作}'
-F '' //指定分隔符,可以使用正則表達式[]指定多個分隔符
-v OFS='' //指定列印時的分隔符
變數:
NF //行數
NR //列數
執行動作:
'{print $#}' //選擇列印第#列,$0代表所有列,$NF代表最後1列
匹配模式:
'/關鍵字/' //匹配關鍵字的行,支持正則表達式
'/關鍵字1/,/關鍵字2/' //匹配從關鍵字1到關鍵字2中間所有的行
'NR==1' //匹配第1行
'NR>=10' //匹配行數大於10的所有行並顯示行號
'$1==1' //匹配第1列的值等於1的行
'$1>=10 && $1<=20' //匹配第1列的值大於等於10並小於等於20的行
'$1>=10 || $3!=20' //匹配第1列的值大於等於10或者第3列的值不等於20的行
'$NF~"/sbin/nologin"' //匹配最後1列字元為/sbin/nologin的行
'$NF~!"/sbin/nologin"' //匹配最後1列字元不為/sbin/nologin的行
語法示例:
awk -F ':' '{print "第一列:"$1,"第二列:"$2,"第三列:"$3}' /etc/passwd
//使用:為分隔符分割/etc/passwd文件中的內容,按照想要的格式列印出來
awk -F ':' -v OFS='-' '{print $1,$2,$3}' /etc/passwd
//使用:為分隔符分割/etc/passwd文件中的內容,按照想要的格式列印出來
grep文本過濾
grep //搜索文本內容,並將匹配的內容所在一整行都顯示出來
//支持使用正則表達式來過濾文本
--color //匹配到的內容高亮顯示
-i //忽略大小寫
-w //強制模式,完全匹配字詞
-n //顯示匹配到的內容的行號
-c //顯示匹配到的內容一共有多少行
-v //顯示沒有被模式匹配到的行
-o //只顯示被模式匹配到的字元串
-E //使用擴展正則表達式。grep -E相當於使用egrep
-q //靜默模式,不向屏幕輸出任何信息
-A 1 //被模式匹配到的內容以及其後面1行的內容都顯示出來
-B 1 //被模式匹配到的內容以及其前面1行的內容都顯示出來
-C 1 //被模式匹配到的內容以及其前後的行各顯示1行
egrep //基於正則表達式查找文件內容
fgrep //不支持正則表達式,執行速度快
sed文本過濾和編輯器
sed //基於行的過濾和轉換文本的流編輯器
語法:sed [選項] [過濾條件和sed命令] [輸入文件]
-n //取消預設sed輸出,用於過濾文本內容
-r //使用擴展正則表達式
-e //一條語句執行多條sed命令
-i //修改文件內容
2、文件查找命令
find //實時查找,精確性強,遍歷指定目錄中所有文件完成查找,
//查找速度慢,支持眾多查找標準。
語法:
find 查找路徑 [OPTION...] [查找標準] [查找到以後的處理動作]
查找路徑,預設為當前目錄
查找標準,預設為指定路徑下的所有文件
-name 'filename' //對文件名作精確匹配.支持glob通配符機制
-iname 'filename' //文件名匹配時不區分大小寫
-regex pattern //基於正則表達式進行文件名匹配,以pattern匹配整個文件路徑字元串,而不僅僅是文件名稱
-user username //根據屬主來查找
-group groupname //根據屬組來查找
-uid //根據UID進行查找,當用戶被刪除以後文件的屬主會變為此用戶的UID
-gid //根據GID進行查找,當用戶被刪除以後文件的屬組會變為此用戶的GID
-nouser //查找沒有屬主的文件.用戶被刪除的情況下產生的文件,只有uid沒有屬主
-nogroup //查找沒有屬組的文件.組被刪除的情況下產生的文件,只有gid沒有屬組
-type //根據文件類型來查找(f,d,c,b,l,p,s)
-size //根據文件大小進行查找。如1k、1M,+10k、+10M,-1k、-1M,+表示大於,-表示小於
-mtime //修改時間
-ctime //改變時間
-atime //訪問時間
+5 //5天前
-5 //5天以內
-mmin //多少分鐘修改過
-cmin //多少分鐘改變過
-amin //多少分鐘訪問過
+5 //5分鐘前
-5 //5分鐘以內
-perm mode //根據許可權精確查找
-perm -mode //9位許可權中非0的許可權必須完全匹配
-perm /mode //9位許可權中非0的許可權任何一位匹配即可
//組合條件:
-a //多條件同時滿足(與)
-o //多條件滿足其中一個即可(或)
-not //滿足前面不滿足後面(非)
! // ! 和-not含義一樣
//處理動作:預設為顯示到屏幕上
-print //顯示
-ls //類似ls -l的形式顯示每一個文件的詳細信息
-fls /path/to/somefile //查找到的所有文件的長格式信息保存至指定文件中
-delete //刪除查找到的文件
-ok COMMAND {} \; //對查找到的每個文件執行COMMAND,每次操作都需要用戶確認
-exec COMMAND {} \; //對查找到的每個文件執行COMMAND,操作不需要確認
註意:find傳遞查找到的文件至後面指定的命令時,查找到所有符合條件的文件一次性傳遞給後面的命令,而有些命令不能接受過多參數,此時命令執行可能會失敗。而xargs可規避此問題。
| xargs //通過管道將查找到的內容給xargs處理,xargs會把內容進行拆分,拆分完畢後將內容作為參數交給後面的命令執行。