3. 列印模式空間(p命令)

來源:互聯網
上載者:User

利用sed 的p命令,您可以列印當前模式空間的內容。

您可能想為什麼需要p命令,這是因為在執行sed命令之後,sed預設會列印模式空間裡的內容。

您將會看到有幾個原因:p命令能讓您針對性的控制哪些內容將被列印到標準輸出stdout)。通常,當使用p命令的時候會結合-n選項,防止sed預設列印的內容也出現在標準輸出。 否則,如果只用p列印)命令的話,匹配行就會顯示兩次。

下面的例子中,exployee.txt的每一行都顯示兩次:

$ sed 'p' employee.txt

101,John Doe,CEO

101,John Doe,CEO

102,Jason Smith,IT Manager

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

105,Jane Miller,Sales Manager

每行列印一次類似於’cat exployee.txt’):

$ sed -n 'p' employee.txt

101,John Doe,CEO

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

指定一個範圍

如果您在sed命令沒有指定匹配範圍,預設它匹配所有的行。 下面的幾個例子示範了在執行sed時都指定了範圍。

僅列印第2行:

$ sed -n '2 p' employee.txt

102,Jason Smith,IT Manager

列印從第1行到第4行:

$ sed -n '1,4 p' employee.txt

101,John Doe,CEO

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

列印從2行到最後一行$代表最後一行):

$ sed -n '2,$ p' employee.txt

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

修改位址範圍

您也可以使用”,”,”+”和 ~ 修改位址範圍表示方法。

在上面的例子中,我們已經看到了幾個使用逗號,)表示範圍的例子。它的意思很明顯:n,m顯示從n行到m行。

加號+)可以和逗號一起使用,指定一個數字,而不是具體到哪行。 例如,n,+m表示從第n行及後面的m行。

波浪號~)也可以用在位址範圍裡。 其意思是是每次跳幾行。例如,位址範圍n~m表示,sed應在第n行開始,每次跨度m行。

1~2匹配1,3,5,7等。

2~2匹配2,4,6,8等

1~3匹配1,4,7,10等。

2~3匹配2,5,8,11等。

只列印奇數行:

$ sed -n '1~2 p' employee.txt

101,John Doe,CEO

103,Raj Reddy,Sysadmin

105,Jane Miller,Sales Manager

模式比對

正如您可以指定數字表示地址或範圍),也可以指定一個匹配模式或模式範圍),下面是幾個例子。

列印含有”Jane”的行:

$ sed -n '/Jane/ p' employee.txt

105,Jane Miller,Sales Manager

列印從第一次匹配”Jason”的行到第4行:

$ sed -n '/Jason/,4 p' employee.txt

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

註:如果在第4行之前沒有找到匹配“Jason”的行,這命令將列印第四行後面含有”Jason”的行。

列印從第一次匹配”Raj”的行到最後一行:

$ sed -n '/Raj/,$ p' employee.txt

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

列印從匹配“Raj”的行開始到匹配“Jane”的行:

$ sed -n '/Raj/,/Jane/ p' employee.txt

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

列印從匹配“Jason”的行及它後面的兩行:

$ sed -n '/Jason/,+2 p' employee.txt

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.