如果该行与给定模式匹配,如何删除该行的第一个字符

时间:2014-09-08 15:37:53

标签: shell awk sed

只有当给定的模式与该行匹配时,我才需要删除每一行的第一个字符。

我试过用空格替换第一个字符,但每行都附加空格。

 sed -e '/#/s/^/ /' 2.txt > 1.txt

我需要从每行中删除#。请建议我如何做到这一点。

2 个答案:

答案 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

它用一个空字符串替换一行开头的#,如果该行的开头没有#,那么它就不会触及该行。