Shell高階之4大核心工具

2021-09-29 08:25:10 字數 4531 閱讀 5184

cut:cut的工作就是「剪」,具體的說就是在檔案中負責剪下資料用的。cut 命令從檔案的每一行剪下位元組、字元和字段並將這些位元組、字元和字段輸出。

基本語法:cut [選項引數] filename 說明:預設分隔符是製表符

選項引數說明:

選項引數

功能-f

列號,提取第幾列

-d分隔符,按照指定分隔符分割列

-c指定具體的字元

案例

(1)選取系統path變數值,第2個「:」開始後的所有路徑:

[hadoop101@liufeng datas]$ echo

$path

/usr/lib64/qt3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hadoop101/bin

[hadoop101@liufeng datas]$ echo

$path

|cut -d: -f 2-

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/hadoop101/bin

(2)切割ifconfig 後列印的ip位址

[hadoop101@liufeng datas]$ ifconfig eth0 |

grep

"inet addr"

|cut -d: -f 2 |

cut -d" " -f1

192.168.1.102

sed:sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為「模式空間」,接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。

基本用法:sed [選項引數] 『command』 filename

選項引數說明

選項引數

功能-e

直接在指令列模式上進行sed的動作編輯。

-i直接編輯檔案

命令功能描述

命令功能描述

a新增,a的後面可以接字串,在下一行出現d刪除

s查詢並替換

案例

(0)資料準備

[hadoop101@liufeng datas]$ touch sed.txt

[hadoop101@liufeng datas]$ vim sed.txt

dong shen

guan zhen

wo wo

lai lai

le le

(1)將「mei nv」這個單詞插入到sed.txt第二行下,列印。

[hadoop101@liufeng datas]$ sed

'2a mei nv' sed.txt

dong shen

guan zhen

mei nv

wo wo

lai lai

le le

[hadoop101@liufeng datas]$ cat sed.txt

dong shen

guan zhen

wo wo

lai lai

le le

注意:檔案並沒有改變

(2)刪除sed.txt檔案所有包含wo的行

[hadoop101@liufeng datas]$ sed

'/wo/d' sed.txt

dong shen

guan zhen

lai lai

le le

(3)將sed.txt檔案中wo替換為ni

[hadoop101@liufeng datas]$ sed

's/wo/ni/g' sed.txt

dong shen

guan zhen

ni ni

lai lai

le le

注意:『g』表示global,全部替換

(4)將sed.txt檔案中的第二行刪除並將wo替換為ni

[hadoop101@liufeng datas]$ sed -e '2d' -e 's/wo/ni/g' sed.txt

dong shen

ni ni

lai lai

le le

awk:乙個強大的文字分析工具,把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行分析處理。

基本用法:

awk [選項引數] 『pattern1 pattern2…』 filename

pattern:表示awk在資料中查詢的內容,就是匹配模式

action:在找到匹配內容時所執行的一系列命令

選項引數說明

選項引數

功能-f

指定輸入檔案折分隔符

-v賦值乙個使用者定義變數

案例

(0)資料準備

[hadoop101@liufeng datas]$ sudo

cp /etc/passwd ./

(1)搜尋passwd檔案以root關鍵字開頭的所有行,並輸出該行的第7列。

[hadoop101@liufeng datas]$ awk -f: '/^root/'

passwd

/bin/bash

(2)搜尋passwd檔案以root關鍵字開頭的所有行,並輸出該行的第1列和第7列,中間以「,」號分割。

[hadoop101@liufeng datas]$ awk -f: '/^root/'

passwd

root,/bin/bash

注意:只有匹配了pattern的行才會執行action

(3)只顯示/etc/passwd的第一列和第七列,以逗號分割,且在所有行前面新增列名user,shell在最後一行新增"dahaige,/bin/zuishuai"。

[hadoop101@liufeng datas]$ awk -f :

'begin end'

passwd

user, shell

root,/bin/bash

bin,/sbin/nologin

。。。ityoiuxin,/bin/bash

fengge,/bin/zuishuai

注意:begin 在所有資料讀取行之前執行;end 在所有資料執行之後執行。

(4)將passwd檔案中的使用者id增加數值1並輸出

[hadoop101@liufeng datas]$ awk -v i=1 -f: ''

passwd12

344. awk的內建變數

表1-56

變數 說明

filename 檔名

nr 已讀的記錄數

nf 瀏覽記錄的域的個數(切割後,列的個數)

5. 案例實操

(1)統計passwd檔名,每行的行號,每行的列數

[hadoop101@liufeng datas]$ awk -f: ''

passwd

filename:passwd, linenumber:1,columns:7

filename:passwd, linenumber:2,columns:7

filename:passwd, linenumber:3,columns:7

(2)切割ip

[hadoop101@liufeng datas]$ ifconfig eth0 |

grep

"inet addr"

|awk -f: ''

|awk -f " "

'' 192.168.1.102

(3)查詢sed.txt中空行所在的行號

[hadoop101@liufeng datas]$ awk

'/^$/' sed.txt

5

sort:是在linux裡非常有用,它將檔案進行排序,並將排序結果標準輸出。

基本語法:

sort(選項)(引數)

選項引數說明

選項說明

-n依照數值的大小排序

-r以相反的順序來排序

-t設定排序時所用的分隔字元

-k指定需要排序的列

案例

(0)資料準備

[hadoop101@liufeng datas]$ touch sort.sh

[hadoop101@liufeng datas]$ vim sort.sh

bb:40:5.4

bd:20:4.2

xz:50:2.3

cls:10:3.5

ss:30:1.6

(1)按照「:」分割後的第三列倒序排序。

[hadoop101@liufeng datas]$ sort -t : -nrk 3 sort.sh

bb:40:5.4

bd:20:4.2

cls:10:3.5

xz:50:2.3

ss:30:1.6

shell高階特性 4

1 shell模組 shell指令碼中可以載入配置檔案或呼叫已經完成函式或指令碼。a 載入配置檔案 新建配置檔案config,插入以下 1 reboot mode true 在同一路徑下,新建檔案module.sh,插入以下 1 bin bash 2 可以簡寫為 config 3source con...

Shell四大工具

cut cut的工作就是 剪 具體的說就是在檔案中負責剪下資料用的。cut 命令從檔案的每一行剪下位元組 字元和字段並將這些位元組 字元和字段輸出。1 基本用法 cut 選項引數 filename 說明 預設分隔符是製表符 2 選項引數說明 f 列號,提取第幾列 d 分隔符,按照指定分隔符分割列 c...

Linux shell 之Shell命令高階

寫在前面 案例 常用 歸類 解釋說明。by jim 監控程式 a.程序檢視 ps ef e表示系統上執行的所有程序,f用於擴充套件輸出一些有用的資訊列。ps efh h引數可以將程序組織為分層格式,可以顯示哪些流程是隨其他程序一起啟動的。ps help ps指令的幫助資訊 b.實時監控 top q退...