1. find 查找符合查找條件的文件
find pathname -options [-print -exec -ok …]
--options:
-perm :文件查找權限,後加數字
-type :文件類型,後加f:文件 d:目錄 l:符號連接文件
-group : 查找屬於group指定用戶組的文件
-exec :後面跟的是command命令
command命令的終止,使用 分號「;」來肯定,在後面必須有一個';'
{},使用{}來表示文件名,也就是find前面處理過程當中過濾出來的文件,用於command命令進行處理,可是對於不一樣的系統直接使用分號可能會有不一樣的意義,使用轉移符'\' 在分號前明確說明。
-ok :後面跟的是command命令,與-exec不一樣的是每次執行command 都須要用戶確認是否執行。
Example:(1).列出文件名中含有root字符的文件
find / -type f -name 「*root*」 -exec ls -l {} \;
2. tr 過濾器tr用來轉換來自標準輸入的字符。
tr [OPTION]... SET1 [SET2]
1',把passwd中的全部小寫字符轉換成小寫字符
tr [a-z] [A-Z] < /etc/passwd
--options
-s : 刪除全部與SET1重複的字符,只保留第一個。
2',除去重複的e
tr -s 'e' <test4.txt
tr -s 'e' 'f' <test4.txt 把e轉換成f並把重複的f除去
-d : 刪除SET1同樣的字符
3',刪除passwd中的':'
tr -d ':' /etc/passwd
3. sort 按字典序排序
4. uniq 去除重複
5. cut 字符串截取
cut OPTION... [FILE]…
--options
-c:以字符爲單位取出指定位置的字符
-d:指定分隔符分割字符串 與-f一塊兒使用
-b:以字節爲單位取出指定位置的字符
-f:依據 -d 的分隔字元將一段訊息分割成爲數段,用 -f 取出第幾段的意思
cut -d ':' -f1 /etc/passwd
對文件/etc/passwd 的每一行以 : 爲分割符,取出第一段
6. sed 過濾和轉換文本的流編輯器
sed [OPTION]... {script-only-if-no-other-script} [input-file]…
sed [options] 'command' file(s)
--option
-n --quiet,--silent
-e command,--expression=commandgit
-i 直接在原文件上修改,而不是輸出到stdout,不然其它的處理都輸出到stdout正則表達式
--command(相似vim中的command)
1'.d 刪除指定的範圍的內容
$sed '2d' bashrc 刪除bashrc文件的第二行
$sed '2,$d' bashrc 刪除bashrc文件的2到最後一行
$sed '/#/d' bashrc 刪除bashrc文件中包含#的行
2'.s 替換命令
$sed 's/#/$/' bashrc 把bashrc文件每一行中的第一個#替換成$
3'.p 打印命令
$sed -n '2,5p' bashrc 把bashrc文件的2到5行打印出來
4'.e 多點編輯(能夠多個命令一塊兒用)
$ -n -e 's/#/$/' -e '2,5p' bashrc 把bashrc文件每一行中的第一個#替換成$,並把2,到 5行打印出來
5'.a\ 追加命令
$sed '/^#/a\This is append' bashrc 在bashrc文件的每一行行首是#的行的下一行添加 This is append
6'.i\ 插入命令
$sed '/^#/i\This is append' bashrc 在bashrc文件的每一行行首是#的行的前一行添加 This is append
7'. w 寫入文件命令
$sed '/^#/w filename' bashrc 把bashrc中的每一行行首爲#的行寫入文件filename中
8'. r讀入文件
$sed '/^#/r filename' bashrc 把filenmae的內容寫入到 bashrc文件中的行首是#的行的後面express
7.awkvim
主要用於解析文本。
bash
8. grep
grep [OPTIONS] PATTERN [FILE...]
--OPTIONS:
-i :忽略大小寫
--color
-v :顯示沒有匹配的選項
-o :只顯示匹配的字符串
-r :遞歸的搜索匹配
--PATTERN: 正則表達式 regular expression(RE)
[]:匹配指定範圍內的任意單個字符
[^ ]:匹配不在指定範圍內的任意單個字符
字符集:
[:digit:] [:space:] [:upper:] [:lower:] [:alpha:] [:alnum:]
'[[:digit:]][[:space:]]' 表示匹配一個數字後加一個空格
元字符:
(1).'.':匹配任意單個字符
(2).'*':匹配其前面的字符任意次
(3).'\?':匹配其前面的字符0或1次
(4).'\{n,m\}':匹配其前面的字符n到m次
位置:
(1). '^':此字符後面的字符必須出如今行首
(2). '$':此字符前面的字符必須出如今行尾 ^$空白行
(3). '\<或\b':此字符後面的字符必須做爲單詞首部出現
(4). '\>或\b':此字符前面的字符必須做爲單詞尾部出現
分組:
(1).'\(\)':後向引用
\1:第一個左括號以及對應的右括號匹配的字符
\2:第二個左括號以及對應的右括號匹配的字符
\3:第三個左括號以及對應的右括號匹配的字符
example:
test.txt:
He love his lover
He love his liker
He like his lover
He like his liker
$grep '\(l..e\).*\1' test.txt
匹配:
He love his lover
He like his liker
(l..e)被做爲一個組看待,它是一個組,它的名稱是1,而後 .*表示 以後的任意個字符,【\1】指代的是前面用括號括起來的l..e。
--擴展
egrep
fgrep: fast grep,不支持正則表達式
sed,awk支持正則表達式
9. file globbing (文件通配符)
bash自己沒有正則表達式的功能,bash所作的是展開文件名擴展,就是所謂的通配(globbing).
不是使用標準的正則表達式,而是使用通配符。通配解釋標準的通配符:
(1), *匹配任意多個字符, 除了」.」
(2), ?匹配一個字符, 除了」.」
(3), []匹配方括號中的任意一個字符,除了」.」
(4), 通配機制中的通配符和元字符不會擴展點文件
PS:Bash 會對命令行中沒有引號引發來的字符嘗試文件名擴展app