shell命令更改文件并保存

时间:2019-07-05 09:05:28

标签: shell vim

我想使用 shell脚本修改文件内容,例如用新字符串替换文件中的第3行,然后保存到原始文件。任何人都可以提出建议以实现这一目标吗?

3 个答案:

答案 0 :(得分:3)

使用shell脚本中的vim执行此操作有点不寻常,但是自从您问到:

vim -es '+3s/.*/a new string' '+wq' file

通常,您会选择其他工具,例如(sed -i是就地编辑):

sed -i '3s/.*/a new string/' file

或使用awk

gawk -i inplace 'NR==3{$0="a new string"}1' file

答案 1 :(得分:2)

在类似Unix的系统中,可以使用sed替换特定行的内容。例如,下面的命令将text.txt文件中的第三行替换为“ HelloWorld”。

sed -i '3c HelloWorld' text.txt

如果您只想更改第三行内容的一部分,则可以使用:

sed -i '3s/aaa/bbb/' text.txt 

这只会在第三行将字符串“ aaa”替换为“ bbb”。

答案 2 :(得分:2)

edsedvim更合适,因为它旨在以编程方式就地编辑文件。 ({seded s 处理版本; -i是非标准扩展名。)

printf '3s/.*/new stuff/\nw\n' | ed my_file.txt