簡體   English   中英

了解sed

[英]Understanding sed

我試圖了解如何

sed 's/\^\[/\o33/g;s/\[1G\[/\[27G\[/' /var/log/boot

起作用了,這意味着什么。 我閱讀的手冊頁讓我更加困惑,我嘗試了信息sai ID,但不知道如何工作! 我對Linux很陌生。 Debian是我的第一個發行版,但是似乎是一個很合邏輯的起點,因為它是許多其他發行版的基礎,並且已經存在了一段時間,因此可能做得很好並且相當標准化。 如果需要,我將Wheezy 64位作為fyi運行。

sed命令是流編輯器 ,讀取其文件(或STDIN)以供輸入,將命令應用於輸入,並將結果(如果有)呈現給輸出(STDOUT)。

sed的一般語法是

sed [OPTIONS] COMMAND FILE

在shell命令中,您給出了:

sed 's/\\^\\[/\\o33/g;s/\\[1G\\[/\\[27G\\[/' /var/log/boot

sed命令是s/\\^\\[/\\o33/g;s/\\[1G\\[/\\[27G\\[/'並且/var/log/boot是文件。

給定的sed命令實際上是兩個單獨的命令:

  1. s/\\^\\[/\\o33/g

  2. s/\\[1G\\[/\\[27G\\[/

#1的目的是使用s (替代)命令,用八進制值033ESC字符)替換所有出現的'^[' 但是,此sed命令中有一個錯誤。 轉義八進制代碼的正確bash語法為\\nnn ,因此編寫此sed命令的正確方法是:

s/\\^\\[/\\033/g

注意替換字符串后面的g嗎? 這意味着執行全局替換; 沒有它,只有第一次出現會被更改。

#2的目的是用\\[27G\\[替換所有出現的字符串\\[1G\\[ \\[27G\\[ 但是,此命令也有一個錯誤:需要尾隨g引起全局替換。 因此,第二條命令需要這樣寫:

s/\\[1G\\[/\\[27G\\[/g

最后,將所有這些放在一起,將兩個sed命令應用於/var/log/boot文件的內容,其中輸出已將所有出現的^[轉換為\\033 ,而字符串\\[1G\\[具有已轉換為\\[27G\\[

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM