【问题标题】:How to add text in a txt file with bash scripting如何使用 bash 脚本在 txt 文件中添加文本
【发布时间】:2012-10-22 02:20:02
【问题描述】:

我有一个问题。我需要在 txt 文件中添加一个文本行。这是我的文件:

  • 000
  • 001 测试1
  • 002 测试2
  • 003 测试3
  • 004
  • 005 测试4
  • 006 测试5
  • 007 测试6

我需要使用 bash 脚本在第 000 行和第 004 行添加文本。

我该怎么办? 谢谢大家!

【问题讨论】:

  • 文件中是否确实存在数字?

标签: bash


【解决方案1】:

您可以使用“sed”工具来实现您的目标。它对于操作文件非常强大。 你可以使用这样的命令:

sed -i /your/file.txt -e "s/000/000'\n'YOUR_NEW_LINE/"
sed -i /your/file.txt -e "s/004/004'\n'YOUR_NEW_LINE/"

(如果我理解正确,您的文件第一行开头有“000”,第五行开头有“004”)

【讨论】:

  • 好的,非常感谢这项工作。但是我有一个问题,我需要在第一个空白行中插入新行。我该怎么办?非常感谢
  • gedit发布的行数,但是文件中没有行号
【解决方案2】:

这就是seded 实用程序的用途。它们使用相同的命令集,但有一些细微差别。主要区别在于ed 编辑文件并在标准输入上接受命令,而sed 在命令行上接受命令并将标准输入编辑到标准输出。

使用sed 通常更方便,除非您遇到由于其流式特性(例如移动文本)而无法执行的操作。

【讨论】:

    【解决方案3】:

    这可以通过 while/read 循环在本机 bash 中完成:

    while read num cmt; do
      if [[ -z cmt ]] ; then
        printf '%s test%s\n' "$num" "$num"
      else
        echo "$num $num"
      fi
    done <infile.txt >outfile.txt
    

    【讨论】:

      【解决方案4】:
      awk 'NR==1{print $0, "Foo"}NR==5{print $0, "Bar"}'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 2011-10-08
        • 2019-10-24
        相关资源
        最近更新 更多