【发布时间】:2020-12-22 08:43:26
【问题描述】:
我有一个配置文件,其中包含我需要从 bash 脚本修改的每行 1 个键/值对。这有点棘手,因为我需要修改一个特定的键/值对,它可能不存在于文件中,它可能存在但为空,或者它可能存在但已填充,如下所述。
文件的示例片段:
additional.urls=cache.enable=truecompiler.cache_core=true
我需要找到键/值对“additional.urls=”并修改它。但没有什么是容易的,首先可能会填充该行,或者它可能根本不存在于文件中。
additional.urls=
或additional.urls=https://myurl.me
如果键/值对为空(= 之后除了空格之外什么都没有),那么我想将 url 附加到行尾:https://newurl.it:
additional.urls=https://newurl.it
如果全部丢失,我想将整个键/值行插入到文件中,最好是在顶部,但这并不重要。
然后它会变得更棘手,如果它已经有一个值(可能是 1 个或多个 url 逗号分隔)我需要保留已经存在的所有内容并附加到行尾添加一个逗号,然后是新的 url:
additional.urls=https://myurl1.me,https://myurl2.me
变为:additional.urls=https://myurl1.me,https://myurl2.me,https://newurl.it
我不知道该怎么做。如果只是搜索和替换,我知道该怎么做,但条件让我发疯。也许 sed 不是正确的答案,是 awk 更好还是别的什么?我只是不知道。
【问题讨论】: