shell的一些工具語法

2021-10-24 14:40:20 字數 3508 閱讀 4255

1)基本用法

cut [選項引數] filename

2)選項引數說明

選項引數 功能

-f 列號,提取第幾列

-d 分隔符,按照指定分隔符分割列(預設分隔符是製表符)

3)案例實操

(1)資料準備

[root@hadoop101 datas]$ touch cut.txt

[root@hadoop101 datas]$ vim cut.txt

dong shen

guan zhen

wo wo

lai lai

le le

(2)切割cut.txt第一列

[root@hadoop101 datas]$ cut -d " "

-f 1 cut.txt

dong

guan

wolai

le

(3)切割cut.txt第

二、三列

[root@hadoop101 datas]$ cut -d " "

-f 2,3 cut.txt

shen

zhen

wolai

le

(4)在cut.txt檔案中切割出guan

[root@hadoop101 datas]$ cat cut.txt | grep "guan"

| cut -d " "

-f 1

guan

1)基本用法

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

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

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

2)選項引數說明

選項引數 功能

-f 指定輸入檔案拆分隔符

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

3)案例實操

(1)資料準備

[root@hadoop101 datas]$ cp

/etc/passwd .

/

(2)搜尋passwd檔案以root關鍵字開頭的所有行,並輸出該行的第7列(檔案按照「:」切分)。

[root@hadoop101 datas]$ awk -f ":"

'/^root/' passwd

/bin/bash

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

[root@hadoop101 datas]$ awk -f ":"

'/^root/' passwd

root,

/bin/bash

(4)只顯示/etc/passwd的第一列和第七列(檔案按照「:」切分),以逗號分割,且在第一行前面新增列名user,shell在最後一行新增"dahaige,/bin/zuishuai"。

[root@hadoop101 datas]$ awk -f : 'begin  end' passwd

user, shell

root,

/bin/bash

bin,

/sbin/nologin

。。。atguigu,

/bin/bash

dahaige,

/bin/zuishuai

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

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

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

34

4)awk的內建變數

變數 說明

filenme 檔名

nr 已讀的記錄數(可以表示行數)

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

5)案例實操

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

[root@hadoop101 datas]$ awk -f ":"

'' passwd

filename:passwd, linenumber:1,columns:7

filename:passwd, linenumber:2,columns:7

filename:passwd, linenumber:3,columns:7

(2)切割ip

[root@hadoop101 datas]$ ifconfig | grep "netmask"

| awk -f "inet"

''| awk -f " "

''

(3)查詢某個檔案中空行所在的行號

[root@hadoop101 datas]$ awk '/^$/' sed.txt 

5

1)基本語法

sort(選項)(引數)

選項 說明

-n 依照數值的大小排序

-r 以相反的順序來排序

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

-k 指定需要排序的列

引數:指定待排序的檔案列表

2)案例實操

(1)資料準備

[root@hadoop101 datas]$ touch sort

.sh[root@hadoop101 datas]$ vim sort

.sh

bb:40:5.4

bd:20:4.2

xz:50:2.3

cls:10:3.5

ss:30:1.6

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

[root@hadoop101 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

1)基本語法

wc [選項引數] filename

選項引數 功能

-l 統計檔案行數

-w 統計檔案的單詞數

-m 統計檔案的字元數

-c 統計檔案的位元組數

2)案例實操

統計/etc/profile檔案的行數、單詞數、位元組數!

[root@hadoop101 datas]

# wc -w /etc/profile

[root@hadoop101 datas]

# wc -l /etc/profile

[root@hadoop101 datas]

# wc -m /etc/profile

正則的一些語法

1.b 單詞的開頭或結尾 2.代表重複0次或多次 連在一起就意味著任意數量的不包含換行的字元 3.代表重複n次數 4.d 表示10十進位制數 s匹配任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w匹配字母或數字或下劃線或漢字等。匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線...

R一些語法

1.讀檔案 讀csv檔案 u read.csv g jd data data jdata user.csv header true 不加header預設false,即就是資料框的列名為v1,v2.header true,第一列為列名2.隨機抽樣 sample x,size,replace false...

docker Dockerfile 一些語法

環境變數 與宣告 的env宣告 也可以在特定指令作為變數用來被解釋dockerfile。轉義也被處理,從字面上包含類似於變數的語法。環境變數dockerfile用 variable nameor 來標註 他們被對等地對待,大括號語法通常用於解決變數名稱沒有空白的問題,如 bar。該 語法還支援一些標...