第三周作業

第三周 

文本處理工具:

            linux上文本處理三劍客:

                     grep、egrep、fgrep:文本過濾工具(模式pattern)工具

                          grep:基本正則表達式  -E  -F

                          egrep:擴展正則表達式,-G -F

                          fgrep:不支持正則表達式,

                     sed:stream editor,流編輯器;文本編輯工具;

                     awk:LINux的實現為gawk,文本報告生成器(格式化文本)

            

            正則表達式:

                  由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示其字面意義,而是用于表示控制和通配的功能;

                  分兩類:

                     基本正則表達式:BRE

                     擴展正則表達式:ERE

                  元字符:\(hello[[:space:]]\+|)|+

            grep:Global serch REgular expression and print out         the line.

                  作用:文本搜索工具、根據用戶指定的模式”(過濾條件)“

                        對目標文件逐行進行匹配堅持;打印匹配到的行;

                  模式:由正則表達式的元字符及文本字符所編寫的過濾條件

                  正則表達式引擎;

                  grep [OPTIONS] PATTERN [FILE…](同時處理多個file)

                  grep [OPTIONS]  [-e PATTERN] | -f FILE [FILE…]

                       

                       常用OPTIONS:

                            –color=auto:對匹配到的文本著色高亮顯示;

                            -i:ignorecase,忽略字符大小寫;(默認情況是區分大小寫)

                            -o:僅顯示匹配到的字符串本身;

                            -v:–inver-match:顯示不能被模式匹配到的行

                            -E:支持使用擴展的正則表達式(元字符)

                            -F:搜索

              -q:–quiet,–silent:     

                      例如#grep "UUID" /etc/fstab

                           -A#;after,后#行

                           -B#;bifore,前#行

                           -C#:context,前后各# 行

                      基本正則表達式元字符:

                            字符匹配:

                                 .:匹配任意單個字符;

                                    例如:grep “r..t” /etc/passwd

                                 []:匹配指定范圍內的任意單個字符;

                                 [^]:匹配指定范圍外的任意單個字符;

                                     [:digit:]

                                     [:lower:]

                                     [:upper:]

                                     [:alpha:]

                                     [:alnum:]

                                     [:punct:]

                                     [:space:]

            

                            匹配次數:

                                  用在指定其出現的次數的字符的后面,用于限制其前面字符

                                  出現的次數;

                                  *(僅表現次數):匹配其前面的字符任意次:0,1,多次;

                                     例如: grep “x*y” 表示前面的x可以出現0,1,或者多次

                                  .*:匹配任意長度的任意字符

                                  例如 grep "r.*"

                                  \?:匹配其前面的字符0次或1此,即前面字符可有可無

                                  \+:匹配其前面字符1次或多次;即前面的富足出現至少1次

                                  \{m\}:只匹配其前面字符m次。

                                  \{m,n\}:匹配其前面的字符至少m次,至多n次

                                      \{0,n\}:至多n次

                                      \{m,\}\:至少m次

                            位置錨定:

                                ^:行首錨定;用于模式的最左側;

                                   grep "^root" /etc/passwd

                                $:行尾錨定;用于模式的最右側;

                                   grep "root$" /etc/passwd

                                ^PATTERN$:用于pattern匹配整行;

                                ^$:空白行;

                                ^[[:space:]]*$:空行或包含空白字符的行;

                                單詞:非特殊字符組成的聯系字符串都稱為單詞;

                                \<或\b:詞首錨定

                                  例如grep "\<root" /etc/passwd 用于匹配root出現在整個單詞的最左側(針對一個單詞)

                                \>或\b:詞尾錨地,用于單詞模式的右側

                                  例如grep  "root\>" /etc/passwd 

                                  用于匹配root整個單詞的詞尾也就是最右邊(針對一個單詞來說)

                                

                                \<PATTERN\>:匹配完整的單詞

1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。

who |cut -d' ' -f1|uniq
2、取出最后登錄到當前系統的用戶的相關信息。

# who |tail -1 |cut -d ' ' -f1|id
uid=0(root) gid=0(root) 組=0(root)
3、取出當前系統上被用戶當作其默認shell的最多的那個shell。

# cut -d':' -f7 /etc/passwd |sort |uniq -c |sort -n |tail -1 |cut -d' ' -f7
# cut -d':' -f7 /etc/passwd |sort |uniq -c |sort -n |tail -1 |awk -F' ' '{print $2}'
4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。

# sort -nt':' -k3  /etc/passwd |tail |tr 'a-z' 'A-Z' >/tmp/maxusers.txt
5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
CentOS 7:

# ifconfig |head -2|tail -1|awk -F' ' '{print $2}'
CentOS 6:

#  ifconfig |head -2|tail -1 |cut -d':' -f2 |cut -d' ' -f1
6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。

# ls /etc/*.conf |cut -d'/' -f 3 |tr 'a-z' 'A-Z' >/tmp/etc.con
7、顯示/var目錄下一級子目錄或文件的總個數。

# ls /var/ |wc -l
8、取出/etc/group文件中第三個字段數值最小的10個組的名字。

# sort -nt':' -k3 /etc/group |head |cut -d':' -f1
9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。

# cat /etc/fstab /etc/issue > /tmp/etc.test
10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:
(1)、創建組distro,其GID為2016;

# groupadd -g 2016 distro
(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;

# useradd -g distro -u 1005 mandriva
(3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;

# useradd -u 1100 -d /home/linux mageia
(4)、給用戶mageia添加密碼,密碼為mageedu;

# echo magedu |passwd –stdin mageia
# echo -e "magedu\nmagedu" |passwd mageia
(5)、刪除mandriva,但保留其家目錄;

# userdel mandriva
(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;

# groupadd peguin
# useradd -u 2002 -g distro -G peguin slackware
(7)、修改slackware的默認shell為/bin/tcsh;

# usermod -s /bin/tcsh slackware
(8)、為用戶slackware新增附加組admins;

# groupadd admins
# usermod -aG admins slackware
(9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;

# echo "magedu" |passwd –stdin slackware
# chage -m 3 -M 180 -W 3 slackware
(10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;

# groupadd nova
# groupadd clouds
# useradd -u 3003 -g clouds -G peguin,nova openstack
(11)、添加系統用戶mysql,要求其shell為/sbin/nologin;

]# useradd -r -s /sbin/nologin mysql
(12)、使用echo命令,非交互式為openstack添加密碼。

# echo -e "magedu\nmagedu" |passwd openstack

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

(0)
VersionVersion
上一篇 2016-12-18 22:00
下一篇 2016-12-19 01:12

相關推薦

  • sed 流編輯器使用詳解

    一、Stream EDitor, 行編輯器   sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出…

    2016-08-10
  • 馬哥教育網絡班21期+第7周課程練習

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@CentOS7 ~]# fdisk /dev/sdb Command (m for help): n Select…

    Linux干貨 2016-08-22
  • Shell腳本編程—數組、字符串處理

    數組 變量:存儲單個元素的內存空間 數組:存儲多個元素的連續的內存空間     數組名:整個數組只有一個名字;     數組索引:編號從0開始;          [數組名索引]  &nbs…

    Linux干貨 2016-08-30
  • 命令組合

    1 取出當前已登陸的用戶名 2 取出最后登錄用戶的相關信息 3 取出默認shell最多的的類型   4 轉移    [redsun@jiange root]$ sort -t: -k3 -n -r  /etc/passwd | sed -n "1,+3p" | tr 'a-z' …

    Linux干貨 2016-11-13
  • Linux目錄結構

    Linux目錄結構 查看目錄(/) 樹狀目錄結構: 常見目錄的解釋 Linux 下的文件類型 路徑 Linux目錄結構 查看目錄(/) 登錄系統后,在當前命令窗口下輸入命令: [root@localhost ~]# ls /bin   dev  home  lib64       media &nb…

    Linux干貨 2016-09-06
  • grep及正則表達式應用

    grep:文本過濾(模式:pattern)工具 grep家族介紹: grep:標準grep命令,支持標準的正則表達式  BRE  egrep:擴展的grep命令,支持擴展的正則表達式  ERE fgrep:快速的grep命令,不支持正則表達式 grep作用: 文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查;打印匹…

    Linux干貨 2016-07-10
欧美性久久久久