只有当给定的模式与该行匹配时,我才需要删除每一行的第一个字符。
我试过用空格替换第一个字符,但每行都附加空格。
sed -e '/#/s/^/ /' 2.txt > 1.txt
我需要从每行中删除#。请建议我如何做到这一点。
答案 0 :(得分:6)
您需要在^
之后添加一个点,以便它与第一个字符匹配。
sed -e '/#/s/^./ /' 2.txt > 1.txt
示例:强>
$ cat file
foo
foo bar #
$ sed -e '/#/s/^./ /' file
foo
oo bar #
如果您要删除起始#
符号,则无需使用搜索模式,
sed 's/^#//g' file1 > file2
答案 1 :(得分:4)
您可以使用:
sed 's/^#//' 2.txt > 1.txt
它用一个空字符串替换一行开头的#
,如果该行的开头没有#
,那么它就不会触及该行。