2010-10-21 58 views
18

“的sed” 命令有人能为我解释一下这个命令:在bash

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF 
    echo "Hello World" 
EOF 

什么是 “sed的” 命令吗?

+1

sed是“流编辑器”的简称 - 它编辑字节/字符流。 – 2010-10-21 06:29:05

+1

你可能会问,作为我的回答评论,我会很高兴扩大它。 – Benoit 2010-10-21 06:47:50

回答

22

sedStream EDitor。它可以做一整套really cool things,但最常见的是文本替换。

s,%,$,g部分命令行是要执行的sed命令。 s代表替代品,,字符是分隔符(其他字符可以使用; /,:@是流行的)。 %是匹配的模式(这里是一个字面百分号),而$是匹配的第二个模式(这里是一个字面的美元符号)。 g最后意味着g lobally替换每一行(否则它只会更新第一场比赛)。

+1

由于某些原因,sed正在替换所有的行,而不是第一次,当我在结尾处遗漏'g'时。例如'sudo sed -i's,enabled = 0,enabled = 1,'/etc/yum.repos.d/epel.repo'在sed版本的亚马逊AWS image中4.2.1 – Programster 2014-01-20 17:45:22

+2

sed将始终在每行上运行。 'g'选项可以替换该行的每一个匹配项,而不是该行的第一个匹配项。 – 2014-01-29 02:31:22

5

它读取Hello Worldcat)中,由取代$%所有(g)事件和(过)作为根写入/etc/init.d/dropbox

18

Here sed正在使用$替代所有出现的%的标准输入。

举个例子

$ echo 'foo%bar%' | sed -e 's,%,$,g' 

会产生 “富$ $吧”。

1

sed是一个流编辑器。我会说试试man sed.If你没有在系统中找到这名男子网页是指这个网址:

http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

+1

为手册页+1。 – 2010-10-21 06:31:35