第三周學習總結之簡單文本處理

寫在最前

通過前面的學習,我們已經知道Linux是一個一切皆文件的系統,因此對文件的處理就顯得尤為重要,到目前為止,對于新手來說可能連鼎鼎大名的三劍客也未必聽過,不過在這之前我們也可以使用一些非常好用的文本處理工具來完成一些簡單文件的處理。本次內容就是講講如何使用幾個簡單文本處理工具的組合完成一些實用的功能。

文本處理工具

文本處理工具,用我的理解就是能夠對指定文本就行相應處理,提取輸出我們想要的結果。沿著這個思想,我們就來挖一挖這些工具,通過挖掘,下一些好用的命令就被我們給發現了,下面就給您慢慢講講他們都有哪些。

sort

功能描述:用于對文本進行排序。

語 ? ?法:sort ? [OPTION]… FILE…

選 ? ?項

  • -f: 忽略字符大小寫;
  • -t: 指定分隔符,默認為tab, -t “:”表示使用:為分割符;
  • -k: 指定分隔之后要進行排序比較的字段;
  • -n: 使用純數字進行排序;
  • -u: 排序后去重,表示相同的數據只顯示一行;
  • -b:忽略最前面的空格符部分

uniq

功能描述:略去重復的行。

語 ? ?法:uniq [OPTION]… [INPUT [OUTPUT]]

選 ? ?項

  • -d:只顯示存在重復的行;
  • -u:只顯示不重復的行;
  • -c: 顯示文件中行重復的次數;
  • -i:忽略大小寫;

wc

功能描述:統計文件的單詞數、字符數。

語 ? ?法:wc [OPTION]… [FILE]…

選 ? ?項

  • -l:列出行數;
  • -w:列出字(英文單字);
  • -c:列出字符數(字節數)

cut

功能描述:刪除文件每行中的特定部分。

語 ? ?法:cut OPTION… [FILE]…

選 ? ?項

  • -d: 指定分隔符;
  • -f: 依據-d將信息分段,取第幾段的意思;
  • -c:以字符取出固定區間;

tr

功能描述:翻譯或刪除字符。

語 ? ?法:tr [OPTION]… SET1 [SET2]

選 ? ?項

  • -d: 刪除指定內容;

示例演示

通過上面的講解,你可能還是一頭霧水,不要著急,下面的時間不是下課時間,而是練習時間,而且條條大路通羅馬,只要能達到目的,不管你用哪一種方法實現,都是OK的,好了,那就開始吧!

首先呢,需要說明的是后面的很多處理就不會是單一命令的實現,你可能需要結合前面所學的知識將多個命令組合起來使用。

(1)、列出當前系統上所有已經登錄的用戶的用戶名且同一個用戶登錄多次,則只顯示一次。

通過分析此題啊,首先要知道who命令是查看系統上的登陸用戶,并且還要取出他們的用戶名,也即是取出特定字段,這里可以使用cut命令,最后就是去重,通過上面的講解,我們知道sort有個參數就是去重的。有了解題思路,接下來就正式解題吧。

who|who|cut -d ” ” -f1|sort -u

301

(2)、取出最后登錄到當前系統的用戶的相關信息。

通過前面的學習,使用last命令就可以查看登錄到系統的用戶,通過查看登錄文件格式,可以發現最后登錄的反而實在第一行顯示,再使用cut命令截取出用戶名就可以查看此用戶的完整信息了。

last|head -1|cut -d ” ” -f1|id

302

(3)、取出當前系統上被用戶當做其默認shell的最多的那個shell。

在上一篇中我們說到用戶的完整信息保存在/etc/passwd文件中,因此此題的信息就可以在此文件中獲取,在通過上面的文件處理命令輔助就可以完成要求。

cut -d ‘:’ -f 7 /etc/passwd|sort -r|uniq -c|sort -nr|head -1

303

(4)、將/etc/passwd中的第三個字段值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt中。

這里明確給出了以passwd文件的第三個字段就行排序,改為大寫不就是tr命令的功能么。

sort -t ‘:’ -k3n /etc/passwd|tail -10|tr ‘a-z’ ‘A-Z’>/tmp/maxusers.txt

304

(5)、取出當前主機的IP地址。

此題也是通過對ifconfig命令取到的結果進行信息切分,取出其中的IP地址。

ifconfig ens33|grep “netmask”|cut -c 13-26

305

(6)、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。

此題也是先要找出要求的文件,然后進行大小寫轉換即可。

ls /etc/|grep -E ‘.conf$’ |tr ‘a-z’ ‘A-Z’ >/tmp/etc.conf

306

(7)、顯示/var目錄下一級子目錄或文件的總個數。

此處主要用到wc統計個數的功能。

ls /var/|wc -l

307

(8)、取出/etc/group文件中第三個字段數值最小的10個組的名字。

此題上題中的題4類似,大致方法可參照題4。

sort -t ‘:’ -k3n /etc/group|head -10|cut -d ‘:’ -f 1

308

(9)、將/etc/fsteab和/etc/issus文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。

此題讀取同一目錄下的兩個文件可以使用命令行展開方式。

cat /etc/{fstab,issue} >/tmp/etc.test

309

今天的練習就差不多這些了,您學會了么,其他很多看似復雜的問題進行分解,最終都是由一個一個命令組合而來的,就像Linux一樣,由眾多功能單一的小程序組合完成一個復雜的大程序。因此,我們遇到問題要學會剖析分析,這樣才能在雜亂無章中抽絲剝繭,最終出色的完成任務。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90427

(0)
蟲草君蟲草君
上一篇 2017-12-19 21:05
下一篇 2017-12-19 21:55

相關推薦

  • 批量創建用戶(8月1日作業)

    1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,注釋信息為"Gentoo Distribution" 2、創建下面的用戶、組和組成員關系 名字為admins的組;  用戶natasha,使用admins作為附屬組;  用戶harry,也使用admins作為附屬組 &nbs…

    Linux干貨 2016-08-04
  • 【社招】【小米-北京】大數據運維工程師

    【社招】【小米-北京】大數據運維工程師 【工作地點】北京市海淀區安寧莊東路72號科利源大廈 【薪酬福利】15k-30k  期權獎勵、六險一金、水果花茶、班車、健身房、食堂 【投遞方式】郵件主題“崗位+姓名”發送至lipengcheng3@xiaomi.com   工作職責: 1、負責大數據平臺相關系統的運維保障,包括:Hadoo…

    Linux干貨 2017-07-28
  • 第四周練習

    1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限。         # cp -r /etc/skel /home/tuser1      &nb…

    Linux干貨 2016-11-18
  • shll函數作業

    掃描/etc/passwd文件每一行,如發現GECOS字段為空,則填充用戶名和單位電話為62985600,并提示該用戶的GECOS信息修改成功。 [root@localhost sh.log]# cat whileGECOS.sh  #!/bin/bash #author:DYW #掃描/etc/passwd文件每一行…

    Linux干貨 2016-08-24
  • RAID簡述和Linux軟RAID配置

    RAID簡述和Linux軟RAID配置 PS:僅為課程練習,原理和配置可能有誤,僅供參考,謝謝; 1.RAID功能簡述     RAID,全稱(Redundant Arrays of Inexpensive Disk或Redundant Arrays of Independent Disk),現在一般多用于后面那個稱呼,獨立磁盤冗余陣列。RAID的基礎概念大…

    Linux干貨 2016-07-17
  • 網絡管理之基礎知識

    Linux的網絡配置 IP地址 ?  它們可唯一標識 IP 網絡中的每臺設備 ? 每臺主機(計算機、網絡設備、外圍設備)必須具有唯 一的地址 ? IP地址由兩部分組成: ? 網絡ID: ? 標識網絡 ? 每個網段分配一個網絡ID ? 主機 ID: ? 標識單個主機 ? 由組織分配給各設備   IPv4地址格式:點分十進制記法  …

    Linux干貨 2016-09-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-01-07 17:19

    贊,排版比較清晰,最后部分也有自己思考的部分,很贊~~繼續加油。

欧美性久久久久