和管道符有關的命令

和管道符有關的命令

cut命令

用來截取某一個字段vim

語法:cut -d ‘分隔字符’ [-cf] n(這裏的n是數字)centos

  • -d:後面跟分隔字符,分隔字符要用單引號括起來
  • -c:後面接的是第幾個字符
  • -f:後面接的是第幾個字段(區塊)
[root@centos-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@centos-01 ~]# cat /etc/passwd |head -2 |cut -c 1-4
root
bin:

sort命令

sort用作排序。若是sort不加任何選項,則從首字符向後,依次按ASCII碼值進行比較,最後按升序輸出。ruby

語法:sort [-t 分隔符] [-kn1,n2] [-nru](這裏的n1 < n2)bash

  • -t 分隔符:做用跟cut的-d一個意思
  • -n:使用純數字排序
  • -r:反向排序
  • -u:去重複
  • -kn1,n2:由n1區間排序到n2區間,能夠只寫-kn1,即對n1字段排序
[root@centos-01 ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/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
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
[root@centos-01 ~]# head /etc/passwd > 1.txt
[root@centos-01 ~]# sort 1.txt 
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@centos-01 ~]# sort -r 1.txt 
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

wc命令

用於統計文檔的行數、字符數、詞數,經常使用的選項爲:ssh

  • -l:統計行數
  • -m:統計字符數
  • -w:統計詞數
  • wc不跟任何選項,直接跟文檔,則會把行數、詞數、字符數依次輸出。
[root@centos-01 ~]# wc -l 1.txt 
10 1.txt
[root@centos-01 ~]# wc -m 1.txt 
385 1.txt
[root@centos-01 ~]# ls
1.txt  anaconda-ks.cfg
[root@centos-01 ~]# vim 2.txt
[root@centos-01 ~]# wc -m 2.txt 
10 2.txt
[root@centos-01 ~]# cat -A 2.txt 
abcd$ ,;.?$

每行末尾的隱藏字符$也算在字符統計中。post

[root@centos-01 ~]# wc -w 2.txt 
2 2.txt

uniq命令

去重複的行,使用uniq的前提是須要先給文件排序,不然不是相鄰的兩行沒法去重。ui

  • -c:統計重複的行數,並把行數寫在前面。
[root@centos-01 ~]# vim 2.txt 
[root@centos-01 ~]# cat 2.txt 
abcd
,;.?
abcd
abcd
[root@centos-01 ~]# uniq 2.txt 
abcd
,;.?
abcd
[root@centos-01 ~]# sort 2.txt 
,;.?
abcd
abcd
abcd
[root@centos-01 ~]# sort 2.txt |uniq
,;.?
abcd
[root@centos-01 ~]# sort 2.txt |uniq -c
      1 ,;.?
      3 abcd

tee命令

後跟文件名,相似於重定向「>」,可是比重定向多了一個功能,在把文件寫入後面所跟的文件中的同時,還顯示在屏幕上。spa

  • -a:追加劇定向,相似於「>>」。不加「-a」選項,是覆蓋重定向,相似於「>」。
[root@centos-01 ~]# ls
1.txt  2.txt  anaconda-ks.cfg
[root@centos-01 ~]# sort 2.txt |uniq -c
      1 ,;.?
      3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c > a.txt
[root@centos-01 ~]# cat a.txt 
      1 ,;.?
      3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c |tee a.txt
      1 ,;.?
      3 abcd
[root@centos-01 ~]# cat a.txt 
      1 ,;.?
      3 abcd
[root@centos-01 ~]# sort 2.txt |uniq -c |tee -a a.txt
      1 ,;.?
      3 abcd
[root@centos-01 ~]# cat a.txt 
      1 ,;.?
      3 abcd
      1 ,;.?
      3 abcd

tr命令

替換字符,經常使用來處理文檔中出現的特殊符號,如DOS文檔中出現的^M符號。經常使用的選項有兩個:code

  • -d:刪除某個字符,-d後面跟要刪除的字符
  • -s:把重複的字符去掉

最經常使用的就是把小寫變大寫:tr '[a-z]' '[A-Z]'排序

[root@centos-01 ~]# echo "centos" |tr '[cos]' '[COS]'
CentOS
[root@centos-01 ~]# echo "sdut" |tr '[a-z]' '[A-Z]'
SDUT

替換、刪除、去重複都是針對一個字符來說的,有必定侷限性。

split命令

切割文檔,經常使用選項:

  • -b:依據大小來分割文檔,單位爲byte
  • -l:依據行數來分割文檔
[root@centos-01 ~]# cat a.txt 
      1 ,;.?
      3 abcd
      1 ,;.?
      3 abcd
[root@centos-01 ~]# 
[root@centos-01 ~]# 
[root@centos-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@centos-01 ~]# du -sh a.txt 
240K    a.txt
[root@centos-01 ~]# mkdir test
[root@centos-01 ~]# mv a.txt test/
[root@centos-01 ~]# cd test/
[root@centos-01 test]# ls
a.  txt
[root@centos-01 test]# split -b 10000 a.txt 
[root@centos-01 test]# ls
a.txt  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax
xaa    xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay
[root@centos-01 test]# du -sb *
243445  a.txt
10000   xaa
10000   xab
10000   xac
10000   xad
10000   xae
10000   xaf
10000   xag
10000   xah
10000   xai
10000   xaj
10000   xak
10000   xal
10000   xam
10000   xan
10000   xao
10000   xap
10000   xaq
10000   xar
10000   xas
10000   xat
10000   xau
10000   xav
10000   xaw
10000   xax
3445    xay

若是split不指定目標文件名,則會以xaa xab…這樣的文件名來存取切割後的文件。

[root@centos-01 test]# rm -f x*
[root@centos-01 test]# ls
a.txt
[root@centos-01 test]# split -b 100k a.txt 
[root@centos-01 test]# ls
a.txt  xaa  xab  xac
[root@centos-01 test]# du -sh *
240K    a.txt
100K    xaa
100K    xab
40K xac
[root@centos-01 test]# rm -f x*
[root@centos-01 test]# split -b 100k a.txt tmp.
[root@centos-01 test]# ls
a.txt  tmp.aa  tmp.ab  tmp.ac
[root@centos-01 test]# rm -f tmp*
[root@centos-01 test]# split -l 2000 a.txt 
[root@centos-01 test]# ls
a.txt  xaa  xab  xac  xad
[root@centos-01 test]# wc -l *
  6085 a.txt
  2000 xaa
  2000 xab
  2000 xac
    85 xad
 12170 總用量
相關文章
相關標籤/搜索