【问题标题】:How to replace a specific line in a file with an argument with shell script?如何用 shell 脚本的参数替换文件中的特定行?
【发布时间】:2018-05-17 18:19:04
【问题描述】:

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

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

【问题讨论】:

标签: bash shell unix sed


【解决方案1】:

使用 GNU sed:

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

输出:

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

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

【讨论】:

  • 完美,非常感谢赛勒斯先生! s/ 之前的数字是指行号!明白了。
【解决方案2】:
width="30"
path=textfile.txt
sed -i "4s/1000;/$width;/" "$path"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多