首页 > 解决方案 > 用文件中的变量替换字符串

问题描述

我有几行的文件,例如:

 ) extent size 256 next size 512 lock mode row;
  ) extent size 512 next size 512 lock mode row;
  ) extent size 256 next size 512 lock mode row;
  ) extent size 512 next size 512 lock mode row;
  ) extent size 256 next size 512 lock mode row;
  ) extent size 512 next size 512 lock mode row;
  ) extent size 512000 next size 48 lock mode row;
  ) extent size 512 next size 512 lock mode row;

我想将所有这些行更改为:

) extent size 16 next size 16 lock mode row;

我可以得到所有:

cat file | grep "extent size" 

但我不知道如何更改变量文本

谢谢你的帮助,

SP

标签: stringvariablessedreplace

解决方案


您想将所有数字块替换为包含extent size.

您可以使用以下sed解决方案:

val=16;
sed "/extent size/{s/[0-9]\{1,\}/$val/g}" file > newfile

细节

  • /extent size/- 查找包含此文本的行
  • {s/[0-9]\{1,\}/$val/g}- 在找到的行上,用val内容替换一个或多个数字(假设它将是一个简单的数字,不需要额外的处理)。

请参阅在线sed演示


推荐阅读