文件處理工具

Linux的哲學思想之一是一切皆文件,所有系統中有許多文本文件。因此Linux有許多關于文本處理的命令。


cat命令

連接文件并打印到標準輸出設備上,cat經常用來顯示文件內容。


語法

cat [OPTION]… [FILE]…


常用選項

-A, --show-all #顯示所有控制符
-b, --number-nonblank #顯示非空格行號
-E, --show-ends #顯示結束符,沒行后面會加個$
-n, --number #對每行編號
-s, --squeeze-blank #壓縮相鄰的行的單個空行

例如

[root@localhost ~]# cat -An /etc/issue #顯示所所控制符,次文只有換行。n對沒行編號
     1\S$
     2Kernel \r on an \m$
     3$
     4Mage Education Learning Services$
     5http://www.magedu.com$
     6$

[root@localhost ~]# cat -b /etc/issue #b不對空行編號
     1\S
     2Kernel \r on an \m
     3Mage Education Learning Services
     4http://www.magedu.com

[root@localhost ~]# cat >file #cat也經常用來創建新文件,輸入內容再ctrl+d結束即可。
a b c d e 
f g h a d
k l m n q
[root@localhost ~]# ll file #列出是否創建了file文件
-rw-r--r-- 1 root root 31 Aug  8 16:58 file
[root@localhost ~]# cat file #查看file內容
a b c d e 
f g h a d
k l m n q
[root@localhost ~]# cat file ff #也可以同時查看2個文件
a b c d e 
f g h a d
k l m n q
  ddd
dd
dd dd
 d 
d 
 1
  2
   3
    4[root@localhost ~]# cat file ff >new file#合并文一個文件

cut命令

用來顯示行中的指定部分,刪除文件中指定字段。經常與cat連用

語法

cut OPTION… [FILE]…

選項

-b, --bytes=LIST #按字節切割(3個字節一個漢字)
-c, --characters=LIST #按字符切割
-d, --delimiter=DELIM #指定分隔符
-f, --fields=LIST#顯示指定字段內容
   N:只顯示第N個字段
   N-:只顯示第N字段之后的行
   N-M:顯示N到M的行
   N,M:顯示N和M的行
--complement #補充被選擇的字節、字符或字段。
--output-delimiter=STRING #自己切割的內容的指定分隔符
-n   #與-b同用,不切割字符(匹配漢字是用)

 

例如

[root@localhost ~]# tail -5 /etc/passwd |cut -d: -f3- #顯示以":"分隔的第三字段開始顯示
497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
72:72::/:/sbin/nologin
500:500:Alan,Home,111,000:/home/linux:/bin/csh
501:501::/home/Alan:/bin/bash
[root@localhost ~]# tail -5 /etc/passwd|cut -c1,3 --output-delimiter=good #用c指定1,3字符顯示再用good分割。
pgoodl
sgoodh
tgoodp
lgoodn
Agooda

sort命令

將文件進行排序,并將排序結果標準輸出。

語法

sort [OPTION]… [FILE]…

sort [OPTION]… –files0-from=F

常用選項

-r, --reverse #倒序顯示
-n, --numeric-sort #按數字大小排序
-f, --ignore-case #忽略字符大小寫
-u, --unique #選項(獨特,unique)刪除輸出中的重復行
-t, --field-separator=SEP #界定分隔符
-k, --key=KEYDEF #界定列數

例如

[root@localhost ~]# tail -5 /etc/passwd|sort #默認按字母排序
Alan:x:501:501::/home/Alan:/bin/bash
linux:x:500:500:Alan,Home,111,000:/home/linux:/bin/csh
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
[root@localhost ~]# tail -5 /etc/passwd|sort -t: -k3 -n #按":"分隔 指定第三段用數字排序
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
linux:x:500:500:Alan,Home,111,000:/home/linux:/bin/csh
Alan:x:501:501::/home/Alan:/bin/bash

uniq命令

用于報告或忽略文件中的重復行,一般與sort結合使用

語法

uniq [OPTION]… [INPUT [OUTPUT]]

常用選項

-c, --count #顯示重復的行數
-d, --repeated#僅顯示重復的行列
-u, --unique :僅顯示不重復的行列

例如

[root@localhost ~]# tail /etc/passwd |cut -d: -f4-7|sort|uniq -c #僅顯示重復的行
      1 1000:mageedu:/home/mageedu:/bin/bash
      1 1001::/home/roo:/bin/bash
      1 1002::/home/ro:/bin/bash
      1 1003::/home/rooo:/bin/bash
      1 1004::/home/133:/bin/bash
      1 38::/etc/ntp:/sbin/nologin
      1 65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
      1 72::/:/sbin/nologin
      1 74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
      1 89::/var/spool/postfix:/sbin/nologin

練習

?1、找出ifconfig命令結果中本機的所有IPv4地址

[root@localhost ~]# ifconfig|tr -cs '[0-9].' '\n'|sort -ut'.' -k3 #先列出網卡信息在用tr命令把除了數字和.的數字全部轉換成換行符(\n),再用sort以"."做分隔符,列出3列
255.255.0.0
127.0.0.1
192.168.200.255
192.168.200.7
255.255.255.0
10.1.255.255
10.1.36.7

?2、查出分區空間使用率的最大百分比值

[root@localhost ~]# df|tr -cs '\n'|cut -d' ' -f5|tr -d '%' #df列出分區信息在用tr 把換行符壓縮然后用cut用-d以空白做分隔符匹配第5字段最后用tr把多余的%刪除
Use #顯示結果
1
0
0
3
0
13

29

0

?3、查出用戶UID最大值的用戶名、UID及shell類型

[root@localhost ~]# getent passwd|sort -t: -nk3|cut -d: -f1,3,7|tail -1#列出信息用sort以":"為分隔符指定第三字段按數字排序再用cut以":"分隔 去1,3,7字段最后顯示最后一行即可

nfsnobody:65534:/sbin/nologin #顯示結果

?4、查出/tmp的權限,以數字方式顯示

[root@localhost ~]# stat /tmp|tr -s '[:punct:]' ' '|cut -d' ' -f2|head -4|tail -1 #列出信息用tr把標點符號都轉換為空行 在用cut以空格為分隔符 去第二字段在顯示前4行再顯示后1行
1777 #得出結果

?5、統計當前連接本機的每個遠程主機IP的連接數,并按從大到小排序

[root@localhost ~]# netstat -nt|tr -s ' '|cut -d' ' -f4|tr -cs '[0-9].:' '\n' #列出信息,用cut以空白做分隔符去第4段在用tr命令把出0到9的數字和"."的字符轉換為換行符進行壓縮、最后得出結果
192.168.200.7:22
192.168.200.7:22 #結果
192.168.200.7:22

原創文章,作者:ladsdm,如若轉載,請注明出處:http://www.www58058.com/31383

(0)
ladsdmladsdm
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • shell腳本編程之運算

    一、數學運算   1、expr命令     此命令可以在命令行執行數學運算操作。     由于此命令使用時過于麻煩,所以不推薦使用。   2、方括號和雙圓括號      $[ EXPRESSION ]      $((&…

    Linux干貨 2015-12-31
  • 基于NFS服務的mariadb數據庫實現

    實驗要求:     (1) nfs server導出/data/目錄;     (2) nfs client掛載/data/至本地的/mydata目錄;本地的mysqld或mariadb服務的數據目錄設置為/mydata, 要求服務能正常啟動,且可正常 存儲數據;   (3)用另一臺主機,…

    2017-06-11
  • centos系統啟動流程詳解

    centos系統啟動流程詳解 CentOS啟動流程: POST 加電自檢 主板上有一個ROM芯片,有只讀程序,CPU被設計為一旦通電就會自動去找ROM芯片上的程序并運行,即檢查各種硬件設備是否存在。 BootSequence 引導過程 加電自檢后按BIOS中設定的次序查找各引導設備,第一個有引導程序的設備即是本次啟動用到的設備 MBR(BootLoader)…

    Linux干貨 2017-09-04
  • N25_第一周

    計算機組成 計算機通常由硬件和軟件組成1.硬件 CPU CPU通常由控制器和運算器組成。控制器:是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。運算器:是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 存儲 存儲器的功能是存儲程序、…

    Linux干貨 2016-12-03
  • wed服務基礎·httpd基礎配置詳解

    一、 Web Service基礎: service:計算機后臺提供的功能或計算機可以提供的某一種功能 Web Service本質:通過網絡調用其它網站的資源 根據來源的不同,分為兩種服務: 本地服務:使用同一臺機器提供的服務,不需要網絡 網絡服務:使用另一臺機器提供的服務,需要網絡   IANA互聯網地址授權機構(Internet Assigned…

    2017-06-09
  • Linux磁盤和文件系統管理進階(swap、磁盤配額、RAID、LVM、btrfs)

    概述:     上篇已經介紹了一些磁盤和文件系統管理的基礎概念,對磁盤的硬件構造,文件系統的基礎概念部分有了一個大致的了解。本篇就分享一些關于磁盤和文件系統管理的一些高級應用,具體包含:     1、swap交換分區的管理     2、掛載…

    Linux干貨 2016-08-30
欧美性久久久久