1. 程式人生 > 實用技巧 >LINUX核心命令實戰總結五——檔案過濾及內容編輯處理命令二

LINUX核心命令實戰總結五——檔案過濾及內容編輯處理命令二

1.1 sort:文字排序

【功能的說明】

命令sort 將輸入文字內容按照指定的規則進行排序,然後將排序結果輸出

【語法格式】

 sort         [OPTION]...         [FILE]...
 sort          [選項]...              [檔案]...

【使用說明】

命令sort 的引數及說明

引數選項

解釋說明(帶*的為重點)

-b

忽略每行開頭存在的空格字元

-n

依照數值的大小進行排序(*

-r

倒序排列

-u

去除重複行

-t

指定分隔符(*

-k

按指定區間排序(*

【使用範例】

基礎範例:

[root@web01 data]# sort ip.txt
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.5
10.0.0.5
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
View Code

通過引數-n輸出按數字從小到大順序進行排序

[root@web01 data]# sort -n ip.txt
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.5
10.0.0.5
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
View Code

通過引數-r使輸出按照降序排序

[root@web01 data]# sort -nr ip.txt
10.0.0.8 10.0.0.7 10.0.0.6 10.0.0.5 10.0.0.5 10.0.0.5 10.0.0.4 10.0.0.4 10.0.0.4
View Code

通過引數-u去重複行

[root@web01 data]# sort -u ip.txt 
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8

通過引數-t-k指定列排序

[root@web01 data]# sort test5
10.0.0.4  a
10.0.0.4  j
10.0.0.4  t
10.0.0.4  z
10.0.0.5  b
10.0.0.5  c
10.0.0.5  s
10.0.0.6  g
10.0.0.7  l
10.0.0.8  d
[root@web01 data]# sort 
-t " " -k2 test5 10.0.0.4 a 10.0.0.5 b 10.0.0.5 c 10.0.0.8 d 10.0.0.6 g 10.0.0.4 j 10.0.0.7 l 10.0.0.5 s 10.0.0.4 t 10.0.0.4 z
View Code

aa-cd-dd-XX中的最後一列xx進行分組,再對最後一列xx進行分組,再對每組中的“IP2.2.3.XXX

的最後一列XXX進行排序。

[root@web01 data]# cat mac.txt
ad-cd-rc-ab 3.2.3.46
ab-cd-cc-ee 1.2.3.41
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.43
fd-fe-er-fe 2.3.4.51
aa-er-vd-cd 3.4.5.61
zz-sd-jk-ee 5.6.7.82
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.21
ba-er-vd-cd 3.4.5.91
zz-sd-jk-ee 5.6.7.182
ee-ad-df-fc 4.5.6.70
ee-ad-df-fc 4.5.6.210
[root@web01 data]# sort -t "." -k 1.10,1.11 -k 4,4n mac.txt 
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.43
ad-cd-rc-ab 3.2.3.46
aa-er-vd-cd 3.4.5.61
ba-er-vd-cd 3.4.5.91
ab-cd-cc-ee 1.2.3.41
zz-sd-jk-ee 5.6.7.82
zz-sd-jk-ee 5.6.7.182
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.21
ee-ad-df-fc 4.5.6.70
View Code

1.2 join:按照兩個檔案的相同欄位合併

【功能說明】

命令join針對每一對具有相同內容的輸入行,整合為一行輸出到標準輸出。

【語法格式】

 join         [OPTION]...         FILE1         FILE2
 join         [選項]...              檔案1    檔案2

【選項說明】

命令join引數選項及說明

引數選項

解釋說明(帶*的為重點)

-a(檔案號)

輸出檔案中不匹配的行,檔案號可選值1或者2,分別代表檔案1和檔案2

-i

比較欄位時忽略大小寫

-l(欄位)

以第1檔案的指定欄位為基礎進行合併

-2(欄位)

以第2檔案的指定欄位為基礎進行合併

【使用範例】

[root@web01 data]# join test6 test7
yanhuihuang 23 old
huiyanhuang 24 old
huanghuiyan 25 old
huihuangyan 21 old

1.3 uniq:去除重複行

【功能說明】

命令uniq可以輸出或忽略檔案中的重複行,在工作中,我們常用餓場景是使用sort命令對檔案排序,然後使用uniq命令去重並計算。

【語法格式】

 uniq             [OPTION]...         [INPUT ]
 uniq         [選項]...        [檔案或標準輸入 ]

【選項說明】

命令uniq引數及說明

引數選項

解釋說明(帶*的為重點)

-c

去除重複行,並計算每行出現的次數(*

-d

只顯示重複的行

-u

只顯示唯一的行

【使用範例】

去重測試

[root@web01 data]# cat ip.txt
10.0.0.4
10.0.0.4
10.0.0.4
10.0.0.5
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.4
10.0.0.5
[root@web01 data]# uniq ip.txt
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8
10.0.0.4
10.0.0.5
View Code

結合sort去重

[root@web01 data]# sort ip.txt|uniq
10.0.0.4
10.0.0.5
10.0.0.6
10.0.0.7
10.0.0.8

1.4 wc:統計檔案的行數、單詞數或位元組數

【功能說明】

命令wc用於統計檔案的行數,單詞數或位元組數

【語法格式】

wc         [OPTION]...         [FILE]...
wc         [選項]...             [檔案]...

【選項說明】

引數選項

解釋說明(帶*的為重點)

-c

統計位元組數

-l

統計行數(*

-m

統計字元數

-w

統計單詞數

-L

列印最長的長度(*

【使用範例】

檢視檔案的位元組數、字數、行數等。

[root@web01 data]# wc /etc/inittab
 26 149 884 /etc/inittab
[root@web01 data]# wc -c /etc/inittab
884 /etc/inittab
[root@web01 data]# wc -l /etc/inittab
26 /etc/inittab
[root@web01 data]# wc -m /etc/inittab
884 /etc/inittab
[root@web01 data]# wc -w /etc/inittab
149 /etc/inittab
[root@web01 data]# wc -L /etc/inittab
78 /etc/inittab

【生產案例】

檢視登入系統的使用者數。

[root@web01 data]# who 
root     pts/0        2018-01-20 20:53 (10.16.50.4)
root     pts/1        2018-01-21 21:07 (10.16.50.4)
[root@web01 data]# who|wc -l
2

1.5 iconv:轉換檔案的編碼格式

【功能說明】

命令iconv用於轉換檔案的編碼格式

【語法格式】

Iconv         [options]             [-f from-encoding]         [-t to-encoding]             [inputfile]...
Iconv         [選項]             [原編碼]                 [新編碼]                 [輸入檔案]...

【選項說明】

命令iconv的引數選項及說明

引數選項

解釋說明(帶*的為重點)

-f encodingA

從編碼A轉換(*

-t encodingB

轉換成編碼B*

-l

顯示系統支援的編碼(*

-o

將輸出輸入到指定檔案(*

【使用案例】

[root@web01 data]# iconv -f gb2312 -t utf-8 GB2312.txt

1.6 dos2unix:將DOS格式檔案轉換成UNIX格式

【功能說明】

DOSWindows系統)格式檔案轉換成UNIX格式。

【語法格式】

dos2unix   [file]

dos2unix   [檔案]

【使用範例】

windows中用中文文件建立一個Shell指令碼,拷貝到Linux中。

[root@web01 data]# dos2unix test.txt

1.7 diff:比較兩個檔案的不同

【功能說明】

命令diff可以琢行比較純文字的內容,並輸出檔案的差異。

【語法格式】

 diff [OPTION]... FILES FILES

 diff [選項]... 檔案 檔案

【選項說明】

引數選項

解釋說明(帶*的為重點)

-y

以並列的方式顯示檔案異同之處

-W

在使用-y引數時,指定顯示寬度

-c

使用上下文的輸出格式

-u

使用統一格式輸出

命令diff引數選項及說明

【使用範例】

[root@web01 data]# diff test8 test9
1,3d0
< 1
< 2
< 3
5a3,6
> 6
> 7
> 8
> 9
View Code

並排格式輸出

[root@web01 data]# diff  -y test8 test9
1                                                             <
2                                                             <
3                                                             <
4                                                               4
5                                                               5
                                                              > 6
                                                              > 7
                                                              > 8
                                                              > 9
View Code

上下文輸出格式

[root@web01 data]# diff  -c test8 test9 
*** test8       2018-01-22 15:37:13.493980588 +0800
--- test9       2018-01-22 15:37:32.718979772 +0800
***************
*** 1,5 ****
- 1
- 2
- 3
  4
  5
--- 1,6 ----
  4
  5
+ 6
+ 7
+ 8
+ 9
View Code

統一格式輸出

[root@web01 data]# diff  -u test8 test9 
--- test8       2018-01-22 15:37:13.493980588 +0800
+++ test9       2018-01-22 15:37:32.718979772 +0800
@@ -1,5 +1,6 @@
-1
-2
-3
 4
 5
+6
+7
+8
+9
View Code

比較兩個目錄

[root@web01 data]# diff dir2 dir3
Only in dir2: file5.txt

1.8 vimdiff:視覺化比較工具

【功能說明】

命令vindiff呼叫vim開啟檔案,最多可開啟4個檔案,並會以不同顏色來區分檔案的差異。

【語法格式】

vimdiff     [options]             file1         file2                 [檔案            [檔案]        ]
vimdiff     [選項]             檔案         檔案            [檔案         [檔案]    ]

【使用範例

1.9 rev:反向輸出檔案內容

【功能說明】

命令rev可以按照反向輸出內容

【語法輸出】

rev         [file ...]
rev         [檔案 ...]

【使用範例】

[root@web01 data]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@web01 data]# echo {1..10}|rev
01 9 8 7 6 5 4 3 2 1

文字反轉
[root@web01 data]# cat mac.txt
ad-cd-rc-ab 3.2.3.46
ab-cd-cc-ee 1.2.3.41
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.43
fd-fe-er-fe 2.3.4.51
aa-er-vd-cd 3.4.5.61
zz-sd-jk-ee 5.6.7.82
ee-ad-df-fc 4.5.6.7
ee-ad-df-fc 4.5.6.21
ba-er-vd-cd 3.4.5.91
zz-sd-jk-ee 5.6.7.182
ee-ad-df-fc 4.5.6.70
ee-ad-df-fc 4.5.6.210
[root@web01 data]# rev mac.txt
64.3.2.3 ba-cr-dc-da
14.3.2.1 ee-cc-dc-ba
24.3.2.1 aa-cc-dc-ba
34.3.2.1 aa-cc-dc-ba
15.4.3.2 ef-re-ef-df
16.5.4.3 dc-dv-re-aa
28.7.6.5 ee-kj-ds-zz
7.6.5.4 cf-fd-da-ee
12.6.5.4 cf-fd-da-ee
19.5.4.3 dc-dv-re-ab
281.7.6.5 ee-kj-ds-zz
07.6.5.4 cf-fd-da-ee
View Code

1.10 tr:替換或刪除字元

【功能說明】

命令tr從標準輸入中替換、縮減或刪減字元,並將結果寫到標準輸出

【語法格式】

tr         [OPTION]...         SET1                 [SET2]
tr         [選項]...             字元1             [字元2]

【選項說明】

命令tr的引數選項及說明

引數選項

解釋說明(帶*的為重點)

-d

刪除字元(*

-s

保留連續字元的第一個字元,刪除其他字元

-c

使用第一個字串(setl)的補集,取反

【使用範例】

[root@web01 data]# tr 'e' 'x' <mac.txt  
ad-cd-rc-ab 3.2.3.46
ab-cd-cc-xx 1.2.3.41
ab-cd-cc-aa 1.2.3.42
ab-cd-cc-aa 1.2.3.43
fd-fx-xr-fx 2.3.4.51
aa-xr-vd-cd 3.4.5.61
zz-sd-jk-xx 5.6.7.82
xx-ad-df-fc 4.5.6.7
xx-ad-df-fc 4.5.6.21
ba-xr-vd-cd 3.4.5.91
zz-sd-jk-xx 5.6.7.182
xx-ad-df-fc 4.5.6.70
xx-ad-df-fc 4.5.6.210
View Code

使用tr命令“統一”字母大小寫

[root@web01 data]# tr '[a-z]' '[A-Z]' < mac.txt
AD-CD-RC-AB 3.2.3.46
AB-CD-CC-EE 1.2.3.41
AB-CD-CC-AA 1.2.3.42
AB-CD-CC-AA 1.2.3.43
FD-FE-ER-FE 2.3.4.51
AA-ER-VD-CD 3.4.5.61
ZZ-SD-JK-EE 5.6.7.82
EE-AD-DF-FC 4.5.6.7
EE-AD-DF-FC 4.5.6.21
BA-ER-VD-CD 3.4.5.91
ZZ-SD-JK-EE 5.6.7.182
EE-AD-DF-FC 4.5.6.70
EE-AD-DF-FC 4.5.6.210
View Code

刪除檔案中出現的oby中的每個字元

[root@web01 data]# tr -d 'you' <test0
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
abcdefghijklmnpqrst
anhihangilvea
ilveilvei
View Code

1.11 od:按不同進位制顯示檔案

【功能說明】

命令od用於輸出檔案的八進位制,十六進位制或者其他格式編碼位元組。

【語法格式】

 od             [OPTION]...         [FILE]...
 od             [選項]...             [檔案]...

【選項說明】

引數選項

解釋說明(帶*的為重點)

-A地址進位制

按指定的進位制顯示地址資訊,地址進位制包括:

o八進位制(系統預設值)

d 十進位制

x十六進位制

n不列印衛衣值

-t顯示格式

指定資料的顯示格式,主要引數有:

a命名字元,忽略高階位

c ASCLL字元或反斜槓序列(如\n

d 有符號的十進位制數

f 浮點數

o八進位制

u無符號十進位制

x十六進位制

【使用範例】

檢視二進位制命令檔案

[root@web01 data]# od /bin/ls
0000000 042577 043114 000402 000001 000000 000000 000000 000000
0000020 000002 000076 000001 000000 023740 000100 000000 000000
0000040 000100 000000 000000 000000 140440 000001 000000 000000
0000060 000000 000000 000100 000070 000010 000100 000040 000037

1.12 tee:多重定向

【功能說明】

命令tee用於將資料重定向到檔案,同時提供一份重向資料的副本作為後續命令的標準輸入。

【語法格式】

 tee         [OPTION]...         [FILE]...
 tee         [選項]...             [檔案]...

【選項說明】

引數選項

解釋說明(帶*的為重點)

-a

向檔案追加內容,而不是覆蓋(*

【使用案例】

命令tee允許標準輸出同時把內容寫入(覆蓋)到檔案中的實踐示例

[root@web01 dir1]# ls|tee ls.txt
file1.txt
ls.txt
test
[root@web01 dir1]# cat ls.txt
file1.txt
ls.txt
test
View Code

命令tee允許標準輸出同時把內容追加檔案中的例子實踐

[root@web01 data]# ls |tee -a  test1
()
dir1
dir2
dir3
file1.txt
file5.txt
inittab
ip.txt
mac.txt
passwd.txt
test0
test1
test2
test4
test5
test6
test7
test8
test9
test.txt
[root@web01 data]# cat test1
1
2
3
()
dir1
dir2
dir3
file1.txt
file5.txt
inittab
ip.txt
mac.txt
passwd.txt
test0
test1
test2
test4
test5
test6
test7
test8
test9
test.txt
View Code

1.13 思想:做運維的多個好處

1、做運維可以認識更多的人,同時被更多的人認識。

2、做運維可以讓自己的溝通、交際能力變得比開發人員更強。

3、相比開發崗位,運維的崗位更重要一些。

4、運維崗位的競爭對手比開發崗位更弱些,同時運維知識不需要高學歷就能輕鬆掌握。