使用 bash 脚本编辑文件的最佳方法是什么?

使用 bash 脚本编辑文件的最佳方法是什么?

在 RHEL 5.8 上使用 /bin/bash,我想自动编辑文件。我需要脚本来搜索文件并替换文件中的一行。线路示例:

Other line
Current date 01121990
Other line

搜索此行并将日期字符串替换为预定日期。我无法回显到新文件并输入我的日期,因为该文件将从特定于服务器的文件复制。谢谢!

答案1

your_date='your desired date'
sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file

这是最简单的方法。这假设包含要替换的日期的所有行也是唯一以“当前日期”开头的行。

请注意,运行此命令的用户级别还必须具有编辑该文件的权限。

-i 表示内联编辑,这意味着您正在直接编辑文件。

^Current date.*

表示所有以以下内容开头的行:当前日期 并以任何方式结束。换句话说,将整行替换为 sed 的第二个 /.../ 部分中的内容。

Double " 在 sed 语句周围使用,以便变量将用作变量,而不是字符串。

答案2

ed可以做文件就地编辑还有!编辑后的文件的索引节点号保持不变。

file='/path/to/file'
your_date='your desired date'
ls -i "$file"
printf '%s\n' H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file"
ls -i "$file"

相关内容