【问题标题】:Find and replace SSH command? [duplicate]查找和替换 SSH 命令? [复制]
【发布时间】:2021-11-20 19:18:03
【问题描述】:

你好,我需要帮助才能用 ssh 和 sed 替换文件的一行。

问题如下我有一个字符串例如:

我的字符串 = 1234

关键是 = 之后并不总是 1234,所以我无法替换该行。

sed -i 's/mystring =/mystring=1234/g' file.ini

当我运行它时,会发生两件事:

  1. mystring = 12341234(添加数字)
  2. mystring = 123412345(不要删除,留在那里)

如果变量 (sed -i 's/mystring=/mystring=1234/g' file.ini)被执行了两次以上,它所做的就是在末尾加上数字。

这就是我需要替换整行的原因,如果它完成超过 1 次,您会看到它始终保持不变,如果不同,请将其更改为命令中设置的值。

已经非常感谢你了。

【问题讨论】:

  • 请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
  • 您好,您好,问题已描述,并通过我传递的示例,您还需要什么?
  • 你想做什么?用不同的行替换以 mystring 开头的行? s/^mystring =.*/your new line content/。我看不到“数字是如何附加的”?或者“我无法替代,因为结局不同”。请澄清
  • 嗯,如果(mystring =)后面有数字的话,我这里举个例子,你可以把$var换成数字。

标签: sed


【解决方案1】:

你总是可以匹配和替换整行:

sed -i 's/^mystring=.*/mystring=newvalue/' yourfile

.* 在正则表达式中匹配任意数量的字符,包括无字符。

您也可以change 包含特定模式的所有行:

sed -i '/^mystring=/c\
mystring=newvalue' yourfile

或者使用 GNU sed:

sed -ie '/^mystring=/c\' -e 'mystring=newvalue' yourfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2014-09-19
    • 2022-01-09
    • 2013-02-24
    • 2018-10-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多