文件就像:
#comment1
some executable code
#comment2
some executable code
我想在第2行和第4行之前插入两个哈希值,所以我试过, sed's / ^ [^#] / ## / g'但是替换了第一个字符(第二行中的's'),如:
#comment1
##ome executable code
#comment2
##ome executable code
但我希望得到如下输出:
#comment1
##some executable code
#comment2
##some executable code
请建议一些方法来做到这一点。
答案 0 :(得分:1)
使用sed 's/^[^#]/##&/'
。
替换部分中的&
表示匹配的内容'。
当搜索锚定在行的开头时,不需要g
;它只能在给定的行上匹配一次。 OTOH,它实际上并没有造成任何损害。
我注意到输入文件:
#comment1
some executable code
#comment2
some executable code
你原来的输出应该是:
#comment1
##some executable code
#comment2
##some executable code
因为领先的空间会丢失。使用修订后的脚本,输出将保留前导空格:
#comment1
## some executable code
#comment2
## some executable code
答案 1 :(得分:0)
由于[^#]
匹配某个字符,您需要将其替换为替代字符:
sed 's/^[[:blank:]]*\([^#]\)/##\1/' file
#comment1
##some executable code
#comment2
##some executable code
^[[:blank:]]*
在开始时匹配0或空格/制表符。