【问题标题】:shell command to change file and saveshell命令更改文件并保存
【发布时间】:2019-11-15 21:42:18
【问题描述】:

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

【问题讨论】:

    标签: shell awk vim sed


    【解决方案1】:

    在 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
    

    【讨论】:

      【解决方案2】:

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

      sed -i '3c HelloWorld' text.txt
      

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

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

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

      【讨论】:

      • 我建议使用-i.bak 在执行更改之前创建备份。或cp text.txt{,-bak} 在使用 sed 之前。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-05-09
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 2015-06-04
        • 2023-04-11
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        相关资源
        最近更新 更多