求sed替换命令

hanzs 2016-09-21 02:41:34
比如文本中有:
123
abc
abc=

现在想把第一个abc替换成:/usr/local/abc,第二个abc处不替换,求命令!!!
...全文
773 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
糊涂的小白 2016-10-19
  • 打赏
  • 举报
回复
这个问题处理的关键在于“处理”与“不处理”的判定条件: 编号(比如第1、3、5个处理,2、4、6个不处理)? 前后字符串(比如后面不接任何字符就处理,有字符就不处理)? 等等。 判定条件明确了,规则就好写了
hanqingwu 2016-10-13
  • 打赏
  • 举报
回复
替换第一个88为--: sed '0,/88/s//--/' file
baidu_36387643 2016-10-13
  • 打赏
  • 举报
回复
sed '2,2s/abc/\/usr\/local\/abc/g' 111
joan8363 2016-10-13
  • 打赏
  • 举报
回复
sed '0,/abc/s//\/usr\/local\/abc/'
v5洋仔 2016-09-28
  • 打赏
  • 举报
回复
sed '2c /usr/local/abc' /etc.....
hijack00 2016-09-28
  • 打赏
  • 举报
回复
第一个abc对应的模式为^abc$ sed -e 's@^abc$@/usr/local/abc@g' abc.txt
猪头三小队长 2016-09-23
  • 打赏
  • 举报
回复
如果只想替换abc,可以用类似于^abc$的正则表达式,sed里怎么表示这种正则忘了
hanzs 2016-09-23
  • 打赏
  • 举报
回复
那要增加一个获取abc字符串第一次出现的行,这要怎么写呢?我是把这些命令放在脚本里执行的,不是手工跑的
_IanXiao 2016-09-22
  • 打赏
  • 举报
回复
先查看第一个abc在哪一行。

[root@ianLinux data]# cat -n test_2016-09-22.txt 
1 123
2 abc
3 abc=


发现第一个abc在第二行。

[root@ianLinux data]# sed -i '2s#abc#/usr/local/abc#g' test_2016-09-22.txt


[root@ianLinux data]# cat test_2016-09-22.txt 
123
/usr/local/abc
abc=
hanzs 2016-09-21
  • 打赏
  • 举报
回复

结果不对啊
an贝斯 2016-09-21
  • 打赏
  • 举报
回复
sed -e 's/abc/ \/usr\/local \/abc/g' -e '/abc/q' file

19,612

社区成员

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

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