【发布时间】:2021-10-23 20:32:56
【问题描述】:
输入字符串
key=value ; export key
只想选择value
正则表达式[^=]*; 给予包括;。我怎样才能删除它?
sed '/key/ s/[^=]*;/myValue/' fileName
上面的命令是否可以将value 替换为myValue 在具有key 的行中?
【问题讨论】:
输入字符串
key=value ; export key
只想选择value
正则表达式[^=]*; 给予包括;。我怎样才能删除它?
sed '/key/ s/[^=]*;/myValue/' fileName
上面的命令是否可以将value 替换为myValue 在具有key 的行中?
【问题讨论】:
你可以使用
sed 's/\(key=\)[^; ]*/\1myValue/' file > newfile
\(key=\)[^; ]* 模式匹配并捕获第 1 组中的 key= 子字符串,然后匹配除空格和分号之外的任何零个或多个字符。替换模式中的\1 指的是Group 1 的值,所以key= 会保留在结果中。
#!/bin/bash
s='key=value ; export key'
sed 's/\(key=\)[^; ]*/\1myValue/' <<< "$s"
# => key=myValue ; export key
【讨论】:
[^; ]* = [^; ] - 除了; 和空格之外的任何字符,* - 零次或多次。
似乎您正在寻找:
sed -E '/^key=/s/=[^;]*/=myvalue/'
【讨论】:
sed -i。但是不要。真的。这似乎是一个简单的短期解决方案,但它会在未来造成巨大的痛苦。
myValue 成为脚本的参数。