繁体   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