使用sed为每行输出添加前缀

使用sed为每行输出添加前缀,sed,Sed,好的,在谷歌搜索几分钟后,这似乎是在每行输出前加上sed 但我犯了一个我不明白的错误 这意味着什么?我如何解决这个问题 $ sed 's/^/#/' test.txt sed: -e expression #1, char 0: no previous regular expression 我的test.txt看起来像什么-它实际上只是一个测试 ### test.txt a b c d e f g h 哦,是的。。版本 $ sed --version GNU sed version 4.2.

好的,在谷歌搜索几分钟后,这似乎是在每行输出前加上
sed

但我犯了一个我不明白的错误

这意味着什么?我如何解决这个问题

$ sed 's/^/#/' test.txt
sed: -e expression #1, char 0: no previous regular expression
我的test.txt看起来像什么-它实际上只是一个测试

### test.txt
a
b
c
d
e
f
g
h
哦,是的。。版本

$ sed --version
GNU sed version 4.2.1
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

下面的代码将使用捕获组做同样的操作,但是它不会触摸空白行。

sed 's/^\(.\)/#\1/' test.txt
如果要在空行的开头添加
#
,请尝试此操作

sed 's/^\(.\|\)/#\1/' file
示例:

$ cat f
a

b
$ sed 's/^\(.\)/#\1/' f
#a

#b
$ sed 's/^\(.\|\)/#\1/' f
#a
#
#b

您也可以使用
awk
来解决此问题:

cat file
a

b
要将
#
添加到所有行:

awk '{$0="#"$0}1' file
#a
#
#b
#
添加到所有非空行

awk 'NF{$0="#"$0}1' file
#a

#b

魏瑞德,你的sed版本是什么?对我有用。这个错误在 S///YO/中是有意义的,但不是与<代码> S/^/Oy/< /Cord>。HME,我用SED4.2.2尝试过,它工作得很好。试试<代码> SED S/^(.\)/y\\ 1 /'Test.txt它会做同样的操作,但是它不会触摸空白行。@ AvaasajjyEp,Works.请把这个作为答案贴出来。