bash - BASH:更改一行中的单个变量
问题描述
假设一个文件包含以下行:
PARAMETER = 10 # Comment ....
在 Bash 脚本中,我通常使用
sed -i "s/PARAMETER = .*/PARAMETER = 20/" FILE
但这会删除之后的评论。有什么保留它的建议吗?
解决方案
.*
意味着any character, reapeated any amount of time
。按照这个逻辑,#
属于这一类,将被捕获。
为了避免这种情况,最简单的技术是使用否定字符类,即写any character that isn't in a set of specific chracters
语法是[^<any character you don't want>]
你可以写:
sed -i "s/PARAMETER = [^#]*/PARAMETER = 20 /" FILE
推荐阅读
- javascript - 异步和等待后未加载 JavaScript 数据
- python - django modal应该有一个单独的视图吗?
- regex - 飞镖,正则表达式,如何不允许特殊字符?
- java - AWS Lambda:如何将多个参数传递给一个方法?
- java - 当我更改方法中的参数时,其他调用相同方法的类会受到干扰
- java - for循环没有以正确的方式循环android studio
- arrays - 颠簸变换以展平 Nifi 中的数组
- angular - 再次单击时,路由 url 会重复
- dolphindb - 使用 dolphindb 中的 unionAll 函数连接两个表
- python-3.x - 在特定时间内没有文件上传到 S3 的警报