首页 > 解决方案 > 如何用 shell 脚本的参数替换文件中的特定行?

问题描述

我想使用可配置的参数替换文本文档中的特定行。文本文档示例:

DialogUpdateTags,
DialogProductNotFound
{
    width:                          1000;
    height:                         166;
}

在上面的示例中,我想专门编辑第 4 行“1000”,这样脚本就不会编辑其他可能也是 1000 的宽度值。到目前为止,我有这个:

echo "Enter the desired width size in pixels"
read pixelsize
echo "Width size will be $pixelsize"

之后我需要一个 sed 命令,有人可以帮忙吗?有没有办法将 SEP 仅指向第 4 行而不编辑其他任何内容?

标签: bashshellunixsed

解决方案


使用 GNU sed:

pixelsize="30"
sed -E "4s/(width: *)[^;]*/\1$pixelsize/" file

输出:

对话框更新标签,
DialogProductNotFound
{
    宽度:30;
    身高:166;
}

如果您想“就地”编辑文件,请使用 sed 的选项-i


推荐阅读