如何使用sed替换给定字符串(不是文件)的某些内容

时间:2015-10-21 16:21:02

标签: replace sed

这就是我想要的:

echo "abc" | sed 's/a/b/g'

但如果我这样写:

sed 's/a/b/g' "abc"

它会提醒我:

sed: abc: No such file or directory

sedabc视为字符串而不是文件的正确命令是什么?

2 个答案:

答案 0 :(得分:2)

您可以尝试:

echo "abc" | sed 's/a/b/g'

或"这里是字符串":

sed 's/a/b/g' <<< "abc"

更多示例&amp;详情:http://linux.die.net/abs-guide/x15683.html

https://en.wikipedia.org/wiki/Here_document#Here_strings

答案 1 :(得分:1)

该命令已经是正确的,但您对管道存在一些误解。让我们看一个例子:

我有一个 abc 的文件作为内容,所以命令:

Router = Backbone.Router.extend({
        routes: {
            '':'index',
            '#':'index',
            'events/*event' : 'events'
        },
        index: function(){
            this.indexView = new VistaIndex();
        },
        events: function(params) {
            if( this.indexView )
                this.indexView.destroy_view()
            this.eventView = new EventView({currentEvent: params})
        }
    });

产生

cat test | sed 's/a/b/g' 

这里没有错。现在,检查一下:

bbc

因此,当您使用管道时,您正在使用stdin(标准输入)和标准输出(标准输出)。

sed 命令接受这两个文件作为参数或标准输入。 你写的例子是错的,因为&#34; abc&#34; 不是文件

更多信息: