sed 如何只插入一次

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

sed 如何只插入一次

#1

帖子 自由建客 » 2010-10-17 0:57

简单点,我要在 bashrc 中第一个 alias 前插入一行 set -o vi 怎么搞?
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: sed 如何只插入一次

#2

帖子 astolia » 2010-10-17 1:49

代码: 全选

sed "$(sed -n /alias/= bashrc|sed 1q)iset -o vi" bashrc
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
联系:

Re: sed 如何只插入一次

#3

帖子 MaskRay » 2010-10-31 15:41

代码: 全选

sed 'x;/./ba;x;/alias/{i\
set -o vi
h};:a' .bashrc
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: sed 如何只插入一次

#4

帖子 tusooa » 2010-11-01 21:16

建议用perl.

代码: 全选

perl -M5.010 -e '$a=1;while (<STDIN>) { chomp;if ($a == 0 and s/^(alias.*)/set -o vi\n\1/) { $a = 1; } say; }'
MaskRay 写了:

代码: 全选

sed 'x;/./ba;x;/alias/{i\
set -o vi
h};:a' .bashrc
这每个alias都加了.

代码: 全选

] ls -ld //
回复