Linux vi文件内容修改

Linux vi文件内容修改,linux,unix,sed,vi,Linux,Unix,Sed,Vi,假设我在一个名为test的文件中有以下内容: u001:x:comp111:mark_henry u002:x:comp321:zack_mike u003:x:comp132:chris_white 我想打开该文件,转到有chris\u-white的行,并将其更改为chris\u-brown,使其成为u003:x:comp132:chris\u-brown。我正在考虑使用sed命令来执行此操作,但我不确定如何执行。使用sed,下面的方法可以将所有出现的chris_-white替换为chris

假设我在一个名为test的文件中有以下内容:

u001:x:comp111:mark_henry
u002:x:comp321:zack_mike
u003:x:comp132:chris_white

我想打开该文件,转到有
chris\u-white
的行,并将其更改为
chris\u-brown
,使其成为
u003:x:comp132:chris\u-brown
。我正在考虑使用
sed
命令来执行此操作,但我不确定如何执行。

使用sed,下面的方法可以将所有出现的
chris_-white
替换为
chris_-brown
,而无需打开文件
test

sed -i -e 's/chris_white/chris_brown/g' test
如果要在
vi编辑器
中打开文件
test
并进行替换,请执行以下步骤

1) vi测试

2) 键入
:%s/chris_-white/chris_-brown/g

3) 按回车键


这将替换文件中所有出现的
chris_-white
chris_-brown
test

与vi相比,您需要付出更多的努力

sed -i -e 's/chris_white/chris_brown/g' test
echo "s/chris_white/chris_brown/
w
q" | ed -s test
您可以使用
printf
将行作为参数写入:

printf "%s\n" "s/chris_white/chris_brown/" w q | ed -s test

我不确定
-I
选项是否适用于所有Unix操作系统,因为在HP-UX中,它显示为
sed:invalible option--I
,如果
sed's/chris\u white/chris\u brown/g'test\u 1
被重定向到一个新文件,只是为了将更改永久性地保存到一个新文件中,就像
-i
选项一样,该怎么办?这个问题已经被问了很多次,你必须努力避免回答。这里是一个小样本的重复:,,,等。我很困惑有人对这个问题投了赞成票,因为赞成票表明“这个问题表明了研究的努力;它是有用的和明确的”。