cut paste tr sort wc uniq join
awk sed 因爲比較複雜,這裏不做單獨介紹
--------------------------------------------------------------------
1,cut 字符分割,處理文件,僅作展示,不會保存結果
-d, --delimiter=分界符使用指定分界符代替製表符作爲區域分界
-f, --fields=LIST select only these fields; also print any line
cut -d (分隔符(若分隔符爲空格 ‘ ’)) -f (分割後的編號)
exmaple1::顯示用戶名
# cut -d : /etc/passwd -f 1
-c, --characters=列表只選中指定的這些字符
cut -c (字符範圍)
example2:去用戶名的2和4字符
#cut -c 2,4 /etc/passwd
其他,取值範圍
N從第1 個開始數的第N 個字節、字符或域
N-從第N 個開始到所在行結束的所有字符、字節或域
N-M從第N 個開始到第M 個之間(包括第M 個)的所有字符、字節或域
-M從第1 個開始到第M 個之間(包括第M 個)的所有字符、字節或域
---------------------------------------------------------------------
2,paste 多行合併
example3:
# more name age
::::::::::::::
name
::::::::::::::
tom
jack
lili
::::::::::::::
age
::::::::::::::
18
19
20
example4:
# paste name age
tom18
jack19
lili20
-d, --delimiters=列表改用指定列表裏的字符替代製表分隔符
example5:
[root@centos65-22 ~]# paste -d : name age
tom:18
jack:19
lili:20
-s, --serial不使用平行的行目輸出模式,而是每個文件佔用一行
[root@centos65-22 ~]# paste -s name
tomjacklili
----------------------------------------------------------------------------------
3,tr 替換、縮減和/或刪除字符
examp6:
[root@centos65-22 ~]# cat mytest |tr 'a' 'A' && cat mytest
AAA bbb:ccc
ddd eee:fff
aaa bbb:ccc
ddd eee:fff
tr 'a' 'A' 將小寫a轉換爲大寫A
tr '()' '[]' 將小括號轉爲中括號
tr '[a-z]' '[A-Z]' 小寫轉大寫
tr '\n' ' ' 換行轉空格
tr -s 'aaa' 'a' 將多個字符a轉換爲一個字符a
tr -d 'aaa' 刪除aaa
tr -d '[0-9]' 刪除所有數字
examp7:
[root@centos65-22 ~]# cat age |tr '[0-9]' '[5-9 0-4]' && cat age
62
63
75
18
19
20
備註:
\NNN八進制值爲NNN 的字符(1 至3 個數位)
\\反斜槓
\a終端鳴響
\b退格
\f換頁
\n換行
\r回車
\t水平製表符
\v垂直製表符
字符1-字符2從字符1 到字符2 的升序遞增過程中經歷的所有字符
[字符*]在SET2 中適用,指定字符會被連續複製直到吻合設置1 的長度
[字符*次數]對字符執行指定次數的複製,若次數以 0 開頭則被視爲八進制數
[:alnum:]所有的字母和數字
[:alpha:]所有的字母
[:blank:]所有呈水平排列的空白字符
[:cntrl:]所有的控制字符
[:digit:]所有的數字
[:graph:]所有的可打印字符,不包括空格
[:lower:]所有的小寫字母
[:print:]所有的可打印字符,包括空格
[:punct:]所有的標點字符
[:space:]所有呈水平或垂直排列的空白字符
[:upper:]所有的大寫字母
[:xdigit:]所有的十六進制數
[=字符=]所有和指定字符相等的字符
--------------------------------------------------------------------------------
4,sort 排序
-b, --ignore-leading-blanks忽略前導的空白區域
-d, --dictionary-order只考慮空白區域和字母字符
-f, --ignore-case忽略字母大小寫
-g, --general-numeric-sort按照常規數值排序
-i, --ignore-nonprinting只排序可打印字符
-M, --month-sort比較 (未知) < "一月" < ... < "十二月"
在LC_ALL=C 時爲(unknown) < `JAN' < ... < `DEC'
-h, --human-numeric-sort 使用易讀性數字(例如: 2K 1G)
-n, --numeric-sort根據字符串數值比較
-R, --random-sort根據隨機hash 排序
--random-source=文件從指定文件中獲得隨機字節
-r, --reverse逆序輸出排序結果
--sort=WORD按照WORD 指定的格式排序:
一般數字-g,高可讀性-h,月份-M,數字-n,
隨機-R,版本-V
-V, --version-sort在文本內進行自然版本排序
其他選項:
--batch-size=NMERGE一次最多合併NMERGE 個輸入;如果輸入更多
則使用臨時文件
-c, --check, --check=diagnose-first檢查輸入是否已排序,若已有序則不進行操作
-C, --check=quiet, --check=silent類似-c,但不報告第一個無序行
--compress-program=程序使用指定程序壓縮臨時文件;使用該程序
的-d 參數解壓縮文件
--files0-from=文件從指定文件讀取以NUL 終止的名稱,如果該文件被
指定爲"-"則從標準輸入讀文件名
-k, --key=位置1[,位置2]在位置1 開始一個key,在位置2 終止(默認爲行尾)
-m, --merge合併已排序的文件,不再進行排序
-o, --output=文件將結果寫入到文件而非標準輸出
-s, --stable禁用last-resort 比較以穩定比較算法
-S, --buffer-size=大小指定主內存緩存大小
-t, --field-separator=分隔符使用指定的分隔符代替非空格到空格的轉換
-T, --temporary-directory=目錄使用指定目錄而非$TMPDIR 或/tmp 作爲
臨時目錄,可用多個選項指定多個目錄
-u, --unique配合-c,嚴格校驗排序;不配合-c,則只輸出一次排序結果
-z, --zero-terminated以0 字節而非新行作爲行尾標誌
example8:按年齡進行排序
[root@centos65-22 ~]# paste -d : name age |sort -t ':' -k2
tom:18
jack:19
lili:20
example9:按年齡進行排序(倒序)
[root@centos65-22 ~]# paste -d : name age |sort -t ':' -k2 -r
lili:20
jack:19
tom:18
--------------------------------------------------------------------------------
5,wc 統計
-c, --bytes輸出字節數統計
-m, --chars輸出字符數統計
-l, --lines輸出行數統計
--files0-from=文件從指定文件讀取以NUL 終止的名稱,如果該文件被
指定爲"-"則從標準輸入讀文件名
-L, --max-line-length顯示最長行的長度
-w, --words顯示單詞計數
example10:
[root@centos65-22 ~]# cat /etc/passwd |wc
29 45 1330
行數 單詞數 字節數
--------------------------------------------------------------------
6,uniq 去重複行
-c, --count在每行前加上表示相應行目出現次數的前綴編號
-d, --repeated只輸出重複的行
-D, --all-repeated[=delimit-method顯示所有重複的行
-f, --skip-fields=N比較時跳過前N 列
-i, --ignore-case在比較的時候不區分大小寫
-s, --skip-chars=N比較時跳過前N 個字符
-u, --unique只顯示唯一的行
-z, --zero-terminated使用'\0'作爲行結束符,而不是新換行
-w, --check-chars=N對每行第N 個字符以後的內容不作對照
example11:
--------------------------------------------------------------------------
7,join 連接文本中內容相同的行
左連接(left join, 左外連接, left outer join) 格式:join -a1 <FILE1> <FILE2>
右連接(right join, 右外連接,right outer join) 格式:join -a2 <FILE1> <FILE2>
全連接(full join, 全外連接, full outer join) 格式:join -a1 -a2 <FILE1> <FILE2>
指定分隔符:
-t <CHAR>
example12:
[root@centos65-22 ~]# more name age
::::::::::::::
name
::::::::::::::
1 tom
2 jack
3 lili
::::::::::::::
age
::::::::::::::
1 18
2 19
3 20
[root@centos65-22 ~]# join name1 age1
1 tom 18
2 jack 19
3 lili 20