<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 11.6 本章習題 ( 要看答案請將鼠標移動到“答:”下面的空白處,按下左鍵圈選空白處即可察看 ) * 情境仿真題一:通過 grep 搜尋特殊字串,并配合數據流重導向來處理大量的文件搜尋問題。 * 目標:正確的使用正則表達式; * 前提:需要了解數據流重導向,以及通過子指令 $(command) 來處理文件名的搜尋; 我們簡單的以搜尋星號 (*) 來處理下面的任務: 1. 利用正則表達式找出系統中含有某些特殊關鍵字的文件,舉例來說,找出在 /etc 下面含有星號 (*) 的文件與內容: 解決的方法必須要搭配萬用字符,但是星號本身就是正則表達式的字符,因此需要如此進行: ``` [dmtsai@study ~]$ grep '\*' /etc/* 2&gt; /dev/null ``` 你必須要注意的是,在單引號內的星號是正則表達式的字符,但我們要找的是星號,因此需要加上跳脫字符 (\)。但是在 /etc/* 的那個 * 則是 bash 的萬用字符! 代表的是文件的文件名喔!不過由上述的這個結果中,我們僅能找到 /etc 下面第一層子目錄的數據,無法找到次目錄的數據, 如果想要連同完整的 /etc 次目錄數據,就得要這樣做: ``` [dmtsai@study ~]$ grep '\*' $(find /etc -type f ) 2&gt; /dev/null # 如果只想列出文件名而不要列出內容的話,使用下面的方式來處理即可喔! [dmtsai@study ~]$ grep -l '\*' $(find /etc -type f ) 2&gt; /dev/null ``` 2. 但如果文件數量太多呢?如同上述的案例,如果要找的是全系統 (/) 呢?你可以這樣做: ``` [dmtsai@study ~]$ grep '\*' $(find / -type f 2&gt; /dev/null ) -bash: /usr/bin/grep: Argument list too long ``` 真要命!由于命令行的內容長度是有限制的,因此當搜尋的對象是整個系統時,上述的指令會發生錯誤。那該如何是好? 此時我們可以通過管線命令以及 xargs 來處理。舉例來說,讓 grep 每次僅能處理 10 個文件名,此時你可以這樣想: 1. 先用 find 去找出文件; 2. 用 xargs 將這些文件每次丟 10 個給 grep 來作為參數處理; 3. grep 實際開始搜尋文件內容。 所以整個作法就會變成這樣: ``` [dmtsai@study ~]$ find / -type f 2&gt; /dev/null &#124; xargs -n 10 grep '\*' ``` 3. 從輸出的結果來看,數據量實在非常龐大!那如果我只是想要知道文件名而已呢?你可以通過 grep 的功能來找到如下的參數! ``` [dmtsai@study ~]$ find / -type f 2&gt; /dev/null &#124; xargs -n 10 grep -l '\*' ``` * 情境仿真題二:使用管線命令配合正則表達式創建新指令與新變量。我想要創建一個新的指令名為 myip , 這個指令能夠將我系統的 IP 捉出來顯示。而我想要有個新變量,變量名為 MYIP ,這個變量可以記錄我的 IP 。 處理的方式很簡單,我們可以這樣試看看: 1. 首先,我們依據本章內的 ifconfig, sed 與 awk 來取得我們的 IP ,指令為: ``` [dmtsai@study ~]$ ifconfig eth0 &#124; grep 'inet ' &#124; sed 's/^.*inet //g'&#124; sed 's/ *netmask.*$//g' ``` 2. 再來,我們可以將此指令利用 alias 指定為 myip 喔!如下所示: ``` [dmtsai@study ~]$ alias myip="ifconfig eth0 &#124; grep 'inet ' &#124; sed 's/^.*inet //g'&#124; \ &gt; sed 's/ *netmask.*$//g' ``` 3. 最終,我們可以通過變量設置來處理 MYIP 喔! ``` [dmtsai@study ~]$ MYIP=$( myip ) ``` 4. 如果每次登陸都要生效,可以將 alias 與 MYIP 的設置那兩行,寫入你的 ~/.bashrc 即可! * * * 簡答題部分: * 我想要知道,在 /etc 下面,只要含有 XYZ 三個字符的任何一個字符的那一行就列出來,要怎樣進行?grep [XYZ] /etc/* * 將 /etc/kdump.conf 內容取出后,(1)去除開頭為 # 的行 (2)去除空白行 (3)取出開頭為英文字母的那幾行 (4)最終統計總行數該如何進行?grep -v '^#' /etc/kdump.conf | grep -v '^$' | grep '^[[:alpha:]]' | wc -l
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看