本文為原創文章,轉載請標明出處
目錄
- 文件名通配符
- 單字符匹配元字符 ?
- 多字符匹配元字符 *
- 字符范圍匹配符 []
- 排除范圍匹配符 [!]
- 命令中的正則表達式
- 單字符匹配符 .
- 單字符或字符串重復匹配符 *
- 行首匹配符 ^
- 行尾匹配符 $
- 反斜杠屏蔽符 \
- 范圍匹配符 [] 和排除范圍匹配符 [^]
- 詞首詞尾匹配符 \< \>
- 重復次數匹配符 x\{\}
- 查找文件工具 find
- 按文件名查找
- 按文件權限查找
- 按文件類型查找
- 按文件時間戳記查找
- 按文件大小查找
- 按文件屬主或屬組查找
- 使用
exec
或ok
處理查找到的文件 - 使用
xargs
處理查找到的文件
- 查找文本工具 grep
- 轉換和刪除重復命令 tr
- 合並和分割工具
- 排序 sort
- 數據剪切 cut
- 數據粘貼 paste
- 數據連接 join
- 去除重復 uniq
- 分割文件 split
1. 文件名通配符
單字符匹配元字符 ?
匹配任意一個字符
多字符匹配元字符 *
匹配0或1或多個字符
字符范圍匹配符 []
匹配一個字符范圍,其表現形式可以是“-”表示的字母和數字的范圍,也可以是幾個字符的組合
排除范圍匹配符 [!]
不匹配符號內出現的字符組合或字符數字范圍
2. 命令中的正則表達式
單字符匹配符 .
匹配任意一個字符
單字符或字符串重復匹配符 *
匹配單個字符或一個字符串序列的一次或多次重復出現
行首匹配符 ^
在匹配中指示行首位置字符串或模式
行尾匹配符 $
在匹配中指示行尾位置字符串或模式
反斜杠屏蔽符 \
屏蔽一些特殊字符的特殊含義
范圍匹配符 [] 和排除范圍匹配符 [^]
與文件名通配符中的范圍匹配符和排除范圍匹配符用法基本相同
詞首詞尾匹配符 \< \>
在文本開頭或文本結尾匹配與單詞開頭或單詞結尾相匹配的特定的字符串或模式
重復次數匹配符 x\{\}
可以精確匹配字符或字符串連續出現的次數或次數范圍
3. 查找文件工具 find
基本格式
# find [path] [expression]
參數:
depth:先從當前目錄查找,然后再從當前目錄的子目錄中查找
maxdepth LEVELS:向下搜索到第LEVELS層目錄,LEVELS為0表示只在當前目錄查找
mindepth LEVELS:至少向下搜索LEVELS層目錄
mount:不搜索遠程文件系統
follow:搜索如果遇到鏈接文件就連同鏈接所指向的文件一並查找
name:按文件名查找
iname:按文件名查找,不區分大小寫
perm:按文件權限查找
tye:按文件類型查找
mtime +n[-n]:按文件內容改變的時間查找,+n表示修改時間距現在n天前,-n表示修改時間距現在n天以內
ctime +n[-n]:按文件屬性改變的時間查找
atime +n[-n]:按文件訪問的時間查找
size +n[-n]:按文件大小查找,+n表示文件大小大於n,-n表示文件大小小於n,n表示塊,1塊等於512字節
user:按文件所屬主查找
group:按文件所屬組查找
nouser:查找沒有有效屬主的文件
nogroup:查找沒有有效屬組的文件
prune:不再指定目錄中查找
print:將查找的文件輸出到標准輸出
exec:對查找到的文件執行shell命令
ok:對查找到的文件執行shell命令,在每次執行前提示用戶是否執行
按文件名查找
如:
# find /etc -name "*.conf"
按文件權限查找
如:
# find /etc -perm 664
按文件類型查找
如:
# find /dev -type b
按文件時間戳記查找
如:
# find /var/log -mtime -1
按文件大小查找
如:
# find /var/log -size +1M
按文件屬主或屬組查找
如:
# find / -user root
使用 exec
或 ok
處理查找到的文件
如:
# find /var/log -size +1M -exec ls -l {} \;
使用 xargs
處理查找到的文件
如:
# find ~/ -name "test.txt" | xargs rm
4. 查找文本工具 grep
grep:global regular expression print 全局正則表達式打印
# grep [option] [pattern] [file]
參數
i:忽略大小寫
n:將結果輸出的同時,也輸出該行行號
s:在沒有查找到匹配的內容時,不顯示錯誤信息
l:從多個文件中查找時,只輸出找到匹配內容的文件名稱
h:從多個文件中查找時,只輸出匹配的內容,不顯示文件名稱
c:只輸出匹配內容的總行數
v:反轉查找,即輸出匹配內容以外的行
例如:
查詢來自雲南和河南的學生信息
# grep -E 'Yunnan|Henan' students
5. 轉換和刪除重復命令 tr
# tr [option] [string1] [string2]
參數
c:使用string1中字符的補集替換
d:刪除string1中包含的所有字符
s:刪除重復字符
例如:
小寫轉大寫
# tr -s "a-z" "A-Z" <test
刪除所有重復字母
# tr -s "[a-z][A-Z]"
6. 合並和分割工具
排序 sort
# sort [option] [file]
參數
b:按字段進行分類並忽略前面的空格或制表符
d:按字典的順序進行排序,將除空格和字母以外的字符排除
f:忽略大小寫
g:根據數值進行排序
i:只考慮可打印的字符
M:將字符按月份進行比較,例如JAN<...<DEC
n:按數值進行比較排序
r:返向排序
c;測試文件內容是否已經進行了排序,若無任何返回信息,則表示已經執行了排序操作
k:指定排序的關鍵字
m:合並已經排序的文件,不進行排序
o:將結果寫入文件,不再輸出到標准輸出上
s:通過屏蔽最后的分類比較穩定排序
t:使用指定的字符作為字段分隔符
T:將臨時文件放入指定的目錄內
u:如果與參數c一起使用,則檢查是否在排序時已經去除重復的行,沒有參數c時,則在排序時去掉重復行
z:用一個0字節作為結束,而不是一個換行符
例如:
對students文件第5個字段第8個字符按數字從大到小排序
# sort -k5.8nr students
先對students文件第5個字段排序,再按第10個字段排序
# sort -k 5,10n students
指定“#”作為字段分隔符,並對students文件第三個字段進行排序
# sort -t# -k3 students
合並students1,students2到students_new
# sort -m students1 students2 >students_new
數據剪切 cut
cut [option] [file]
參數
b:表示要操作的對象是字節
c:表示要操作的對象是字符
f:表示要操作的對象是字段
d:指定字段分隔符,默認情況下是制表符tab
s:表示不包括沒有字段分隔符的行
N:表示第N個字節
N-:表示從N到一行結束的內的所有文本
N-M:表示從N到M之間的所有文本
-M:表示從開始到M之間的所有文本
-:從開始到結束的所有文本
例如:
剪切students文件所有行的前10個字符
# cut -b-10 students
以“#”為分隔符,並對students文件第1,2,4個字段進行剪切
# cut -d# -f1-2,4 students
數據粘貼 paste
paste [option] [file...]
參數
d:對新生成的文本指定新的字段分隔符,默認情況下是制表符tab
s:橫向粘貼,默認縱向粘貼
例如:
縱向粘貼paste1,paste2文件
# paste paste1 paste2
數據連接 join
# join [option] file1 file2
參數
a:用於輸出2個文件中有關聯和沒關聯的行,將有關聯的行執行連接后輸出,沒關聯的行按預定的格式輸出
e:在文件1和文件2中查找關聯字段,如果沒有關聯字段,則將無關聯字段的行相應的字段用參數指定的字符串替代
i:在連接過程中忽略大小寫
j:使用指定的字段作為關鍵字段連接
o:格式化輸出
t:設置字段間的分隔符,默認為空格或制表符tab
v:與參數a的作用相同,但參數v只輸出無關聯的行
例如:
指定使用文件1的第2個字段和文件2的第2個字段作為關鍵字,只顯示文件1的第1、2、6字段和文件2的第3字段
# join -j1 2 -j2 2 -o "1.1,1.2,1.6,2.3" students1 students2
去除重復 uniq
#uniq [option] [input[option]]
參數
c:輸出重復行的重復次數
d:僅輸出重復的行
f:忽略一些字段,只比較指定字段
s:忽略一些字符,只比較指定字段
i:忽略大小寫
u:輸出不重復的行
w;指定要比較的字符位置
sort -u
與 uniq
區別
sort -u
將整個文本重復行刪除只保留一行
uniq
刪除連續重復行只保留一行
例如:
忽略第1個字段,從第2個字段第2個字符處開始比較
# uniq -f1 -s3 char
分割文件 split
# split [option] [input file] [output file]
參數
l:按行對文件進行分割
b:按字節對文件進行分割
C:按字符對文件進行分割
d:使用數字作為輸出文件的后綴
例如:
指定每3行划分為一個文件
# split -l 3 students students
如有不當之處,請予指正,謝謝~