📜  将行添加到文件 shell 脚本的开头 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:53:55.188000             🧑  作者: Mango

将行添加到文件 shell 脚本的开头 - Shell-Bash

在编写 shell 脚本时,有时需要往文件的开头添加行。这个过程可以使用 sed 命令完成,以下是一个 shell 脚本示例,展示如何使用 sed 在文件的开头添加行。

#!/bin/bash

file_name="my_file.txt"
line_to_add="New line to add"

sed -i "1i $line_to_add" "$file_name"

这个脚本使用变量设置文件名和要添加的新行内容,然后使用 sed 命令在文件的第一行前插入新行。参数 -i 表示在原始文件上进行修改,而不是输出到标准输出流。

需要注意的是,如果添加的新行与原来的第一行相同,将会创建一个新行,因为 sed 并不知道新行和第一行是否相同。

如果要添加多行,可以将每行用换行符分隔放在变量 line_to_add 中,同时使用 sed 命令执行多次,每次在文件的第一行前插入一行。

#!/bin/bash

file_name="my_file.txt"
line_to_add="New line to add\nAnother line\nThird line"

echo -e "$line_to_add" | sed 's/^/\n/' | sed '$d' | tac | sed "1i\\" | tac | sed -i -e "$"

sed -i -e '1s/^/New line to add\nAnother line\nThird line\n/g' "$file_name"

这个脚本使用 echo 命令将待添加的多行内容放在一个字符串中,使用 sed 命令将每行前加上一个换行符,然后去掉最后一个换行符。使用 tac 命令将行顺序反转,使最后一行变为第一行,再次使用 sed 命令在文件第一行前插入新行。最后完成添加操作后,需要删除最后一行,代码如下:

sed -i '$d' "$file_name"

以上是在 shell 脚本中添加行的两种方法,开发者可以根据自己的需求选择使用哪种方法。