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

时间:2015-03-21 01:25:40

标签: 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.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.

2 个答案:

答案 0 :(得分:1)

下面的代码将使用捕获组执行相同操作,但不会触及空白行。

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

答案 1 :(得分:0)

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

cat file
a

b

#添加到所有行:

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

#添加到所有非空白行

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

#b