如何在Unix中的文件中搜索该行中的字符串后,在行尾添加新字符串

时间:2014-07-15 14:56:07

标签: shell unix autosys

我有一个文件,它是我们服务器中所有autosys作业的jil代码的摘录。

示例jil代码:

permission:gx,wx  
date_conditions:yes  
days_of_week:all  
start_times:"05:00"  
condition: notrunning(appDev#box#ProductLoad)

我们希望为服务器中的所有作业添加新的依赖条件 所以我们需要在行尾添加一个新字符串(具有依赖条件的行),如下所示,然后将作业重新加载到服务器中:

condition: notrunning(appDev#box#ProductLoad) & s(new_job_dependency)

我们在服务器中有10000多个作业(文件中有100K行数据),并且不能逐行读取并进行更改。
我们必须在行的开头搜索字符串'condition:',然后在同一行的末尾添加新字符串'new_job_dependency'。

有人可以建议一种方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

如何用一些perl魔法替换所有这些

perl -i -pe  's#^condition: (.*)$#condition: $1 & s(new_job_dependency)#g' filename

答案 1 :(得分:0)

sed可以帮助您:

$ sed '/^condition:/s/$/ \& s(new_job_dependency)/' file
permission:gx,wx  
date_conditions:yes  
days_of_week:all  
start_times:"05:00"  
condition: notrunning(appDev#box#ProductLoad) & s(new_job_dependency)

如果您希望动态更新文件并创建-i.bak备份文件,则可以添加.bak

sed -i.bak '/^condition:/s/$/ \& s(new_job_dependency)/' file

要将其应用到特定目录,请执行以下操作:

sed -i.bak '/^condition:/s/$/ \& s(new_job_dependency)/' your_dir/files*