shell特殊符號cut命令,sort、wc、uniq命令,tee、tr、split命令

shell特殊符號_cut命令

概念:cut命令用來截取某一個字段
格式:cut -d '分割字符' [-cf] n,這裏的n是數字,該命令選項有以下幾個:
- d 後面跟分割字符,分割字符要用單引號括起來
- c 後面接的是第幾個字符
- f 後面接的是第幾個區塊

cut命令用法以下

[root@localhost do]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost do]# cat /etc/passwd |head -2 |cut -d ':' -f 1
root
bin
[root@localhost do]# cat /etc/passwd |head -2 |cut -d ':' -f 1,2
root:x
bin:x
[root@localhost do]# cat /etc/passwd |head -2 |cut -d ':' -f 1-3
root:x:0
bin:x:1linux

cat passwd這個文件,head只查看前兩行,cut -d截取分割符號爲「:」, -f 1 表示截取第一段,1,2表示前兩段,1-3表示頭三段。

sort排序_wc統計行數_uniq刪除重複行

sort命令介紹

sort命令用於排序
格式:sort [-t 分隔符] [-kn1,n2] [-nru]
這裏-n1和n2指的是數字,其餘選項以下:
-t 後面跟分割字符,做用跟cut -d選項同樣,截取符號是什麼;
-n 表示使用純數字排序,字母及特殊符號表示爲0;
-r 表示反向排序;
-u 表示除去重複;
-kn1,n2 表示由n1區間排序到n2區間,能夠只寫-kn1,即對n1字段排序。
  • 例:如sort不加任何選項,他是默認升序輸出,咱們假設看passwd配置文件前五行有什麼區別。

    [root@localhost /]# head -n5 /etc/passwd |sort 
    #查看passwd前五行,輸出給sort(排序)執行,按默認升序排序。
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    root:x:0:0:root:/root:/bin/bashshell

例2:把passwd配置文件前10行寫到3.txt,再加幾個特殊符號數字進行排序。bash

2018.4.21 五週第四次課(shell特殊符號,cut截取等命令)
如圖所示,咱們用sort來進行排序,以數字排序 -n
[root@localhost do]# sort -n 3.txt #-n表示正序,特殊符號及字母表示爲0
2018.4.21 五週第四次課(shell特殊符號,cut截取等命令)
如第一張圖所示,咱們-r 給反向排序看看
[root@localhost do]# sort -r 3.txt #-r表示反序
2018.4.21 五週第四次課(shell特殊符號,cut截取等命令)測試

wc 命令介紹,用於來統計

概念:wc命令用於統計文檔的行數,字符數或詞數。
選項:
-l 統計行數
-m 統計字符數
-w 統計詞數,以空格做爲區分
  • 具體操做以下:

    [root@localhost do]# wc /etc/passwd #查看這個文檔的行數,詞數及字數
    19 27 846 /etc/passwd
    [root@localhost do]# wc -l /etc/passwd #統計行數
    19 /etc/passwd
    [root@localhost do]# wc -m /etc/passwd #統計字數
    846 /etc/passwd
    [root@localhost do]# wc -w /etc/passwd #統計行數
    27 /etc/passwdspa

命令uniq 刪除重複的行

概念:uniq命令用來刪除重複的行,更名了只有-c選項比較經常使用;
它表示統計重複的行數,並把行數寫在前面。
  • 編寫一個文件,示例以下:.net

    [root@localhost do]# touch 4.txt #建立一個文本
    [root@localhost do]# vi 4.txt #編輯內容
    111
    222
    333
    111code

  • 使用uniq前,必須獻給文件排序,不然無論用,示例以下:

    [root@localhost do]# cat 4.txt #查看裏面的內容
    111
    222
    333
    111
    [root@localhost do]# uniq 4.txt #測試一下看看不排序管用麼,無論用的
    111
    222
    333
    111
    [root@localhost do]# sort 4.txt |uniq #sort排序4.txt文件,再輸出給uniq刪除重複行
    111
    222
    333
    [root@localhost do]# sort 4.txt |uniq -c #統計重複的有行,有多少
    2 111
    1 222
    1 333blog

命令tee,重定向並顯示內容

tee命令後面跟文件名,起做用相似於重定向>,但它比重定向多一個功能;
把echo輸出的結果,經過管道符「|」 tee輸出給後面的文件並在屏幕上顯示。
  • 具體操做以下:

    [root@localhost do]# touch 1.txt #建立一個文本
    [root@localhost do]# echo "1321asd123" | tee 1.txt #把echo的內容經過管道符號,輸出給 tee命令,到1.txt文件,而且在屏幕顯示結果。
    1321asd123排序

命令tr,用於替換字符

tr命令用於替換字符,經常使用來處理文檔中出現的特殊符號;
如DOS文檔中出現的符號^M,該命令經常使用的選項以下:
-d 表示刪除某個字符,後面跟要刪除的字符;
-s 表示刪除重複的字符。
  • 假設把一個文件的小l,改爲大L

    [root@localhost do]# echo "linux" > 1.txt 
    [root@localhost do]# cat 1.txt 
    linux
    [root@localhost do]# echo "linux" | tr '[l]' '[L]' #把前面的小l,改爲L
    Linux文檔

命令split,切割文檔

split命令用於切割文檔,經常使用的選項爲-b和-l
-b 表示依據大小來分割文檔,默認單位爲byte(字節)
-l 表示依據行數來分割文檔
  • 先搜索出來個內容,而且全部的內容cat出來,追加劇定向到一個文件去

    [root@localhost /]# find /etc/ -type f -name "*conf" -exec cat {} >> /tmp/do/1.txt \;
    #find 搜索 /etc/ 下的文件 名字問conf結尾的文件,cat {}查看出來的內容,追加到1.txt文件中。
    [root@localhost /]# du -sh /tmp/do/1.txt #查看這個文件的大小
    212K /tmp/do/1.txt

  • 示例1:這個文件有212K,咱們給他切割指定大小爲100K試試,示例以下:

    2018.4.21 五週第四次課(shell特殊符號,cut截取等命令)
    #這裏,-b 指定帶下100K,不加單位默認是以字節顯示。

  • 示例2:指定目標文件名123開頭的文件。

    2018.4.21 五週第四次課(shell特殊符號,cut截取等命令)
    #x開頭的文件,是示例1的結果,不須要看他,看123開頭的文件,造成一個對比。

shell特殊符號

重點章節,之後會常常用到```

#### 特殊符號 $
- 符號$能夠用做變量前面的標識符,還能夠和!結合起來使用,示例以下:
>[root@localhost do]# 
[root@localhost do]# ls /tmp/do/
123aa  1.txt  2.txt  3.txt  4.txt  a.txt  xaa  xab  xac
[root@localhost do]# !ls
ls /tmp/do/
123aa  1.txt  2.txt  3.txt  4.txt  a.txt  xaa  xab  xac
!$表示上條命令中的最後一個變量。

#### 特殊符號 ;
- 若是想在一行中運行兩個或兩個以上的命令,須要在命令之間加符號;示例以下:
>[root@localhost dior1]# mkdir 123 ; touch 1.txt ; touch 2.txt ; ls
123  1.txt  2.txt
如上含義,建立了個目錄,又建立了2個文件,而且最後ls查看執行

#### 特殊符號 ~
- 符號~ 表示用戶的家目錄,root用戶的家目錄是/root,普通用戶是/home/username

#### 特殊符號 &
- 若是想把一條命令放到後臺執行,則須要加上符號&,它一般用於命令運行時間較長的狀況,能夠用在sleep(休眠),示例以下:
>[root@localhost ~]# sleep 30 & 
[1] 40966
[root@localhost ~]# jobs 
[1]+  運行中               sleep 30 &

#### 重定向符號> 、>> 、2> 、 2>>  、 &> 的用法

概念:>、>>他們分別表明取代(>)和追加(>>)的意思;
當咱們運行一個命令報錯時,報錯信息會輸出到當前屏幕;
若是想重定向到一個文本,則須要用重定向符號2>或2>>;
他們分別表示錯誤重定向和錯誤追加劇定向。
&>表示錯誤和正確的重定向輸入到一個文件裏去

#### 中括號[] 
- 中括號內爲字符組合,表明字符組合中的任意一個。(上一章節有提到)

#### 特殊符號 &&和||
- 使用||時,表示或者,意思是說 若是兩條命令用||分割的話,第一條執行成功後,第二條就不會執行,假如第一條命令是錯誤的話,執行失敗就會執行第二條。
> 示例1,假設兩個命令都是正確的
> [root@localhost do]# ls 1.txt || wc -l 2.txt 
1.txt

>示例2: 假設第一條命令是錯誤的,而第二條命令是正確的,就會執行第二條
[root@localhost do]# ls 111111.txt || wc -l 2.txt  #在這裏 根本就沒有一串1的txt文件
ls: 沒法訪問111111.txt: 沒有那個文件或目錄
0 2.txt

- 使用&& 表示前面的命令執行成功之後,纔會執行後面的命令,若是前面命令執行不成功,後面的命令就不會執行。用&&分割,用來判斷的。
>示例1,兩條命令都是正確的狀況下 
>[root@localhost do]# ls 1.txt && wc -l 2.txt #ok,在這裏兩條命令都生效
1.txt
0 2.txt

>示例2,假如第一條命令不成功,後面的命令就不會執行。
>[root@localhost do]# ls 111.txt && wc -l 2.txt 
ls: 沒法訪問111.txt: 沒有那個文件或目錄

# 普通特殊符號介紹
  • 任意個任意字符 ? 任意一個字符 #註釋字符 \ 脫義字符 | 管道符
相關文章
相關標籤/搜索