1. 程式人生 > >65.shell特殊符號與和cut,sort,wc,uniq,tee,tr,split命令

65.shell特殊符號與和cut,sort,wc,uniq,tee,tr,split命令

character 刪除重復的字符 處理 將他 語法 去重 截取 通用 統計字符數

liunx的特殊符號
  • 代表字母或者數字 多個
    ? 任意一個字符
    "#" 註釋
    \ 脫義字符
    | 管道符

1.* 代表任意個任意字符或者數字

[root@localhost /]# ls *.txt
1.txt
[root@localhost /]#

2.?任意一個字符

[root@localhost /]# ls ?.txt
1.txt
[root@localhost /]#

3.註釋

[root@localhost /]# #11111
[root@localhost /]#
PS:意思就代表著說明

4、\脫義

[root@localhost /]# ls .txt
1.txt

[root@localhost /]# ls *.txt
ls: 無法訪問
.txt: 沒有那個文件或目錄
[root@localhost /]#

5.管道符

[root@localhost /]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost /]#

cut命令

命令類型

文件管理

命令描述

用來截取某一個字段來顯示出來

命令語法

cut 【參數】

參數

-d, --delimiter=分界符 使用指定分界符代替制表符作為區域分界
-c, --characters=列表 只選中指定的這些字符

-f :指定某一段

案例:查看/etc/passwd文件 以:為分割符 顯示 第一段

[root@localhost /]# cat /etc/passwd|head |cut -d ":" -f 1
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
[root@localhost /]#

sort命令

命令描述

此命令就是用來針對文檔進行排序的

命令語法

sort [參數] [文件]

參數

-t 分割符:和cut -d 一樣
-n :使用純數字排序
-r :方向排序
-u :去重復
-k :-kn1,n2 :由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序

案例一:不加任何參數,會用ASCII碼值進行比較,最後將他們按升序輸出。

[root@localhost /]#
[root@localhost /]# head /etc/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
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@localhost /]#

WC命令

命令描述

用於統計

命令語法

wc [參數]

參數

-l:統計行數
-m:統計字符數
-w:統計詞數

案例

[root@localhost /]# cat /etc/passwd |wc -l -m -w
19 29 883
[root@localhost /]# cat /etc/passwd |wc
19 29 883
[root@localhost /]#

PS:其實不需要加參數的

unip命令

命令描述

用來刪除重復的行

命令語法

xxxxx|unip
參數
-c 統計重復的行數

案例

[root@localhost ~]# uniq testb.txt
111
222
111
333
[root@localhost ~]# sort testb.txt |uniq
111
222
333
[root@localhost ~]# sort testb.txt |uniq -c
2 111
1 222
1 333

tee命令

tee後面跟文件名,其作用類似於重定向>,比重定向多一個功能,把文件寫入後面所跟的文件時並顯示在屏幕上,通常用於管道符 |後。

案例

#echo “aaaaaaaaaaaaaaa” |tee testb.txt
aaaaaaaaaaaaaaa
#cat testb.txt
aaaaaaaaaaaaaaa

命令tr

tr用於替換字符,常用來處理文檔中出現的特殊符號,如DOS文檔中出現的符號 ^M 。
選項:

參數

-d 表示刪除某個字符,後面跟要刪除的字符。
-s 表示刪除重復的字符。
把小寫字母變成大寫字母,如tr’[a-z]’’[A-Z]’:

案例

#head –n2 /etc/passwd |tr’[a-z]’’[A-Z]’
ROOT:X:O:O:ROOT:/ROOT:/BIN/BASH
BIN:X:11:BIN:/BIN:/SBIN/NOLOGIN
還可以替換一個字符:
#grep ‘root’ /etc/passwd |tr ‘r’ ‘R’
Root:x:o:o:Root:/Root:/bin/bash
opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin

命令split

命令描述

split用於切割文檔,常用的選項為-b和-l。

參數

-b 表示依據大小來分割文檔,單位為byte
-l 表示依據行數來分割文檔

案例

#split –b 500 passwd
#ls
passwd xaa xab xac xad xae

shell一些其他特殊符號

1、特殊符號$

$可以用作變量前面的標識符,還可以和!結合使用。

#cd ..
#ls testb.txt
testb.txt
#ls !$
ls testb.txt
testb.txt
!$表示上條命令的最後一個變量,本例中上條命令最後是testb.txt,那麽在當前命令下輸入!$則表示testb.txt。

2、特殊符號;

在一行命令中運行兩個或兩個以上的命令,需要在命令之間加符號;。

#mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test* 創建目錄、創建文件、列出目錄

3、特殊符號~

符號~代表用戶的家目錄,root用戶的家目錄是/root,普通用戶的家目錄是/home/username。

4、特殊符號&

把一條命令放到後臺執行,則需要加上符號&,它通常用於命令運行時間較長的情況。比如,可以用在sleep後,如下所示:

#sleep 30 &
[1]3008
#jobs
[1]+ 運行中 sleep 30 &

5、重定向符號>、>>、2>和2>>

和>>分別表示取代和追加的意思。當我們運行一個命令報錯時,報錯信息會輸出到當前屏幕。如果想重定向到一個文本,則要用重定向符號2>或者2>>,它們分別表示錯誤重定向和錯誤追加重定向。
#ls aaaa
ls:無法訪問aaaa:沒有那個文件或目錄
#ls aaaa 2> /tmp/error
#cat /tmp/error
ls:無法訪問aaaa:沒有那個文件或目錄
#ls aaaa 2>> /tmp/error
#cat /tmp/error
ls:無法訪問aaaa:沒有那個文件或目錄
ls:無法訪問aaaa:沒有那個文件或目錄

6、中括號[ ]

中括號內為字符組合,代表字符組合中的任意一個,還可以表示一個範圍(1-3,a-z)。

#cd /tmp/10
#ls –d test*
test1.txt test2.txt testb.txt testdir
#ls –d test[1-3].txt
test1.txt test2.txt
#ls –d test[12b].txt
test1.txt test2.txt testb.txt
#ls –d test[1-9].txt
test1.txt test2.txt
#ls –d test[1-9a-z].txt
test1.txt test2.txt testb.txt

7、特殊符號&& ||

在上面剛剛提到了分號,用於多條命令間的分隔符。另外還有兩個可以用於多條命令中間的特殊符號,那就是 “&&” 和 “||” 下面把這幾種情況全列出:

command1 ; command2
command1 && command2
command1 || command2
使用 ”;” 時,不管command1是否執行成功都會執行command2;
使用 “&&” 時,只有command1執行成功後,command2才會執行,否則command2不執行;
使用 “||” 時,command1執行成功後command2 不執行,否則去執行command2,總之command1和command2總有一條命令會執行。

65.shell特殊符號與和cut,sort,wc,uniq,tee,tr,split命令