sed -i '1s/^/#/p' filename为什么会多出一行来?该怎么解决啊

wj8106 2010-01-26 09:24:57
我想实现的功能是把匹配到的行加#号注释,可是得到的结果是#号加上了,可是同样的行有两行了,举个具体的例子,
filename的内容为:
aa
bb
我执行sed -i '1s/^/#/p' filename,结果filename变为:
#aa
#aa
bb
这个问题该如何解决啊!
...全文
288 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
steptodream 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liucy1983 的回复:]
[root@CentOS ~]# vi aa


aa
bb

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"aa" 3L, 7C written
[root@CentOS ~]# sed -i '1s/^/#/g' aa
[root@CentOS ~]# cat aa
#aa
bb

[root@CentOS ~]# sed -i '1s/^/#/p' aa
[root@CentOS ~]# cat aa
##aa
##aa
bb

[root@CentOS ~]#
[/Quote]
你要在第一行前面加#号 这个就可以

sed -i '1s/^/#/g' aa


要在匹配某个东西的任意行前面加#号 这个

sed -i "/这里写你要匹配的东西/s/^/#/" filename


sed -i '1s/^/#/p' aa
至于这个东西 为什么第一行会成2行 你看看sed用法里p的作用你就知道了
wj8106 2010-01-27
  • 打赏
  • 举报
回复
谢谢steptodream
liucy1983 2010-01-27
  • 打赏
  • 举报
回复
[root@CentOS ~]# vi aa










aa
bb

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"aa" 3L, 7C written
[root@CentOS ~]# sed -i '1s/^/#/g' aa
[root@CentOS ~]# cat aa
#aa
bb

[root@CentOS ~]# sed -i '1s/^/#/p' aa
[root@CentOS ~]# cat aa
##aa
##aa
bb

[root@CentOS ~]#
steptodream 2010-01-26
  • 打赏
  • 举报
回复
sed -i '1s/^/#/g' filename
这个也可以 不过你这是在第一行的前面加#号啊
wj8106 2010-01-26
  • 打赏
  • 举报
回复
哦,是不是我最后加“g”加错了,上边我写错了,我用的命令是sed -i '1s/^/#/g' filename
steptodream 2010-01-26
  • 打赏
  • 举报
回复
我告诉你一个吧
sed -i "/这里写你要匹配的东西/s/^/#/" filename

比如要匹配以aa开头的行 并在行首加#
sed -i "/^aa/s/^/#/" filename

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧