代码之家  ›  专栏  ›  技术社区  ›  D-One

如何用shell脚本的参数替换文件中的特定行?

  •  0
  • D-One  · 技术社区  · 7 年前

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

    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行而不编辑其他内容?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Cyrus    7 年前

    使用GNU时:

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

    输出:

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

    如果要“就地”编辑文件,请使用sed选项 -i .

        2
  •  1
  •   John Kugelman Michael Hodel    7 年前
    width="30"
    path=textfile.txt
    sed -i "4s/1000;/$width;/" "$path"
    
    推荐文章