第三周

第三周blog

第三周blog

  • 1
       列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
       # who|cut -d’ ‘ -f 1 |sort -u

  • 2
       取出最后登錄到當前系統的用戶的相關信息。
       # who | tail -n 1

  • 3
       取出當前系統上被用戶當作其默認shell的最多的那個shell。
       # cat /etc/passwd|cut -d: -f7|sort|uniq -c|sort -n|tail -n 1

  • 4
       將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
       # cat /etc/passwd|sort -n -t: -k3|tail -n 10|tr [a-z] [A-Z] > /tmp/etc.conf

  • 5
       取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
       # ifconfig |grep “inet addr” |cut -d: -f2|cut -d’ ‘ -f1

  • 6
       列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
       # ls /etc/*.conf|tr [a-z] [A-Z] > /tmp/etc.conf

  • 7
       顯示/var目錄下一級子目錄或文件的總個數。
       # ls /var | wc -l

  • 8
       取出/etc/group文件中第三個字段數值最小的10個組的名字。
       # cat /etc/group|sort -n -t: -k3|head -n 10|cut -d: -f1

  • 9
       將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。
       # cat /etc/fstab /etc/issue > /tmp/etc.test

-10
   用戶及組管理命令概敘,
       主要 – 1 用戶的增,刪,改,查:useradd,userdel,usermod,id
            – 2 組的增,刪,改,查 : groupadd,groupdel,groupmod,id
            – 3 用戶及組的密碼管理
                   用戶密碼:passwd
                   組密碼:gpasswd

~ (1) 創建組distro,其GID為2016;
# groupadd -g 2016 distro
~ (2) 創建用戶mandriva, 其ID號為1005;基本組為distro;
# useradd -u 1005 -g distro mandriva
~ (3) 創建用戶mageia,其ID號為1100,家目錄為/home/linux;
# useradd -u 1100 -d /home/linux mageia
~ (4) 給用戶mageia添加密碼,密碼為mageedu;
# echo mageedu|passwd --stdin mageia
~ (5) 刪除mandriva,但保留其家目錄;
# userdel mandriva
~ (6) 創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
# useradd -u 2002 -g distro -G peguin slackware
~ (7) 修改slackware的默認shell為/bin/tcsh;
# usermod -s /bin/tcsh slackware
~ (8) 為用戶slackware新增附加組admins;
# usermod -G admins slackware
~ (9) 為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
# passwd -n 3 -x 180 -w 3 slackware
~ (10) 添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
# useradd -u 3003 -g clouds -G peguin,nova openstack
~ (11) 添加系統用戶mysql,要求其shell為/sbin/nologin;
# useradd -r mysql -s /sbin/nologin
~ (12) 使用echo命令,非交互式為openstack添加密碼。
# echo "openstack" | passwd --stdin openstack

sed用法

  • 1  sed作用

  • 2  sed如何工作

  • 3  sed詳細用法

sed用來處理什么

首先來看看man文檔中如何介紹sed

sed - stream editor for filtering and transforming text

其意是數據流編輯器,過濾并且改變文本.用于編輯文本的工具.

sed如何工作
  • sed工作機制

    sed.png

sed是數據流處理工具,每次只讀取一行數據,逐個讀取,并將其復制到內存中的特定空間,此空間是sed自己的工作車間,被稱為模式空間,即圖中parttern space。在模式空間中根據sed所指定的條件進行模式的匹配,可以匹配的行進行處理后,可能保留在模式空間中,可能直接打印至終端(stdout),這需要根據具體的編輯操作,如果不能匹配的行則不處理,保留在模式空間中,在下一行讀入數據之前,將模式空間中還保存的數據打印至標準輸出(stdout).一直循環此機制到條件對應的行.

sed詳細用法
sed [OPTION]... 'scripts' [file]...

    scripts:指的是sed命令匹配的標準,格式為"{[地址定位][編輯命令]}",即{[address-range][sed-command]}.

    OPTION:
        -n:不輸出模式空間的內容至屏幕;
        -e script, --expression=script: 多點編輯;
        -f /PATH/TO/SED_SCRIPT_FILE
            直接運行sed腳本文件編輯,每行一個編輯命令
        -r, --regexp-extended:支持使用擴展正則表達式;
        -i : 直接編輯原文件;


    地址定位:
        空地址:對全文進行處理;相當于1,$;
        #: 特定的第#行,例如5行即匹配第5行;
        $: 最后一行;
        /pattern/:被模式所匹配到的每一行;
        /pattern/,/pattern/: 從第一次模式匹配到的行開始,到第二次模式匹配到的行為止;
        #,/pattern/: 第#行到第一次模式匹配到的行為止;
        #,#: 指定行范圍,左側為起始行,右側為結束行;
        #,+#: 指定行范圍, 左側為起始行,右側為以左側為標準的偏移量;
            例如: 3,+7    第三行至第十行
                  1,$   第一行至最后一行
        步進:~
            1~2:所有奇數行
            2~2:所有偶數行


    編輯命令:
        d:刪除;
        p:顯示模式空間內容;
        a \text:在行后面追加文本"text",支持使用\n實現多行追加;
        i \text:在行前面插入文本"text",支持使用\n實現多行插入;
        c \text: 把匹配到的行替換為此處指定的文本"text";
        w /path/to/filename:將當前模式空間所匹配的行寫入到指定文件中;
        r /path/to/filename:讀取指定文件至匹配行的后面;可做文件合并;
        =:為模式匹配到的行打印行號;每個行號獨占一行;
        !:條件取反;
            地址定位!編輯命令; 例如:'$!d',最后一行不刪除;
        s///:查找替換,其分隔符可自行指定,常用的有s$$$,s###等;
            替換標記:
                g:全局替換;
                w:/path/to/somefile:將替換成功的結果保存至指定文件中;
                p:顯示替換成功的行;
example:
將/etc/hosts文件打印,為什么會每行顯示兩遍呢,其實就是sed工作機制,首先將一行讀入,根據條件是全文匹配,因此第一行直接打印至終端,然后再將模式空間保留原有的行再打印一次,因此便是兩行。

    # sed 'p' /etc/hosts 
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

使用-n選項不打印模式空間的行,只顯示處理之后的行
    # sed  -n 'p' /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

創建一個測試文件/tmp/test

    ]# cat > /tmp/test
    # 1 
    # 2 
    # 3
    # 4
    # 5

刪除:

    刪除/tmp/test第一行至第3行
    ]# sed '1,3d' /tmp/test
    # 4
    # 5

    刪除/tmp/test第一行到三行以后,即到第四行
    ]# sed '1,+3d' /tmp/test
    # 5

    刪除/tmp/test全文
    ]# sed '1,$d' /tmp/test     或者   ]# sed 'd' /tmp/test
    ]#

    刪除/tmp/test奇數行,因此顯示偶數行
    ]# sed '1~2d' /tmp/test
    # 2 
    # 4

    刪除/tmp/test偶數行,因此顯示奇數行
    ]# sed '2~2d' /tmp/test
    # 1 
    # 3
    # 5

    不刪除最后一行/tmp/test,并其顯示行號
    ]# sed '$!d;=' /tmp/test
    5
    # 5

第二個測試文件/tmp/test_1

 ]# cat > /tmp/test_1
  # 1
  @ 2
  # 3
  @ 4   
  $ 5

 在$符號開頭的行后添加兩行文本'test_1'和'test_2'
]# sed '/^\$/a \test_1 \ntest_2' /tmp/test_1
 # 1
 @ 2
 # 3
 @ 4
 $ 5
 test_1
 test_2

  將/tmp/test_2中文件內容讀到/tmp/test_1文件末尾
 ]# sed 'r /tmp/test w /tmp/test_2' /tmp/test_1
  # 1
  @ 2
  # 3
  @ 4
  $ 5
  # 1 
  # 2 
  # 3
  # 4
  # 5

  將非#開頭的行的行首修改為#,且僅顯示修改成功的行
 ]# sed -n 's/^[^#]/#/p' /tmp/test_1 
 # 1
 # 2
 # 3
 # 4
 # 5

 將所有非#的字符替換成#,并顯示替換成功的行
]# sed -n 's/[^#]/#/gp' test_1 
###
###
###
###
###

將前三行所有非#字符替換成#,顯示成功替換的行,并且顯示4,5行
]# sed -n -e '1,3s/[^#]/#/gp' -e '4,5p' test_1 
###
###
###
@ 4
$ 5

高級使用:

sed1.png

在sed工作空間中,不僅僅只有parttern spacc,還有hold space,即保持空間。
以下是其使用:

    高級編輯命令(僅做了解):
         h H : 覆蓋/追加從模式空間到保持空間;
         g G :覆蓋/追加從保持空間到模式空間;
         n N :覆蓋/追加讀取匹配到的行的下一行至模式空間中;
         d:刪除模式空間中的行;
         D: 刪除模式空間中的所有行;
         x:交換兩個空間的內容;
  • sed模式空間與保持空間

由于sed有兩個內存空間,且開始都是空的,便可以允許數據之間的交換,此處只是初步知曉其操作即可。以下有實例:

example:

sed  'G' FILE:在原有的每行后方添加一個空白行;
sed  '1!G;h;$!d'  FILE:逆序顯示文件的內容;
sed  'n;d'  FILE:顯示奇數行;
sed  '$!N;$!D' FILE:取出文件后兩行;

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

(0)
N25_sadanN25_sadan
上一篇 2016-12-18 22:01
下一篇 2016-12-19 07:35

相關推薦

  • 誤刪除centos6.8內核修復全過程

    關于誤刪除系統內核或內核損壞修復教程,本教程主要詳細描述系統內核或內核損壞修復過程中步驟詳解 一.操作環境 硬件:華碩筆記本 軟件:VMware Workstation Pro 12版本  Centos 6.8.iso鏡像 二,修復步驟 第一步,我們先要掛載centos6.8的鏡像,然后光盤啟動 進入系統救援模式 進入當前系統的根目錄 我們需要手動…

    Linux干貨 2016-09-05
  • Linux進程及作業控制

    inux進程 進程的概念 當一個系統啟動時,剛開機是第一個運行的是內核代碼!先把內核放到cpu上運行,等內核控制和掌管了一切,有內核啟動進程!然后創建第一個進程 init進程  內核空間 用戶空間也都已被創建成功!后期的一切管理工作都由init來負責 init不能代表系統完成一些內核特權的執行!但由他負責向內核提交 他…

    Linux干貨 2016-09-10
  • N27_網絡班第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主機用紅色表示; #!bin/bash # for i in `seq 254`;do if ping -c 1 192.168.68.$i &> /dev/null;then echo -e “…

    2017-09-28
  • 推薦-Nginx專題: upstream模塊和緩存的簡單使用

    Nginx專題: upstream模塊和緩存的簡單使用 nginx 負載均衡 Nginx專題: upstream模塊和緩存的簡單使用 前言: 實驗拓撲 實驗環境 Nginx_Upstream模塊介紹 upstream使用方法 upstream使用示例 Nginx_Cache介紹 緩存靜態資源 總結 前言: 本文接著上篇Nginx專題: 從編譯安裝到…

    Linux干貨 2016-04-07
  • Linux網絡管理&腳本編程之執行流程、循環

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋(Bridge):是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,不是共享一條背板總線,可隔離沖突域。網橋比集線器(Hub)性能更好,集線器上各端口都是共享同一條背板總線的。后來,網橋被具有更多端口、同時也可隔離沖突域的交換機(Switc…

    Linux干貨 2016-11-14
  • 初識linux內核編譯

    編譯內核前提:        1、準備開發環境。        2、獲取目標主機上硬件設備的相關信息。        3、獲取目標主機系統功能的相關信息,例如要啟用的文件系統。 &…

    Linux干貨 2016-09-13
欧美性久久久久