【问题标题】:Text manipulation with bash使用 bash 进行文本操作
【发布时间】:2016-11-13 06:57:27
【问题描述】:

我在某个文件中定义了 bash 变量:

VAR1=....
VAR2="some value"
VAR3=....
....

如何更改某个变量的值并在特定行中再添加一个变量?我需要在单个 shell 脚本中完成。

编辑:

预期输出是:

VAR1=....
VAR2="another value"
VAR3=....
NEW_VAR=....
....

【问题讨论】:

  • 请将您想要的输出添加到您的问题中。
  • 帖子已编辑。
  • 让我明白。您有一个包含多个字符串的 bash 文件(或任何其他文本文件)。并且您想更新此脚本(或文本文件)。对吗?
  • 是的,我在文件中有 bash 变量声明,我想更改变量值并在同一个文件中添加其他变量。

标签: linux bash shell awk


【解决方案1】:

如果我正确理解您的问题,我相信以下代码会达到您想要的结果:

#!/bin/bash

#change the value of a certain variable
sed -i -e 's/^VAR2=.*$/VAR2="another-value"/gi' /folder/file

#add a new variable to the variable declaration area, using one existing variable as a reference point
sed -i -e '/^VAR2=/i \NEW_VAR="another-value"' /folder/file

exit 0

这将替换一个变量的值,并使用一个现有变量作为插入新变量的参考点,将一个新变量添加到列表中。此代码适用于许多 Bash 版本。

【讨论】:

  • 感谢您的解决方案!还有一个问题:我如何冷增强来替换 VAR2 的第二次出现的值?
  • 解决这个问题的方法(在其他情况下更改 VAR)是在每次出现 VAR 时添加评论,然后使用 sed 根据评论识别事件。例如(评论): VAR="some-value" #1st -occurrence-var
猜你喜欢
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多