[英]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
命令實際上是兩個單獨的命令:
s/\\^\\[/\\o33/g
s/\\[1G\\[/\\[27G\\[/
#1的目的是使用s
(替代)命令,用八進制值033
( ESC
字符)替換所有出現的'^['
。 但是,此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.