Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed-在变量后的第一个空格中停止_Sed - Fatal编程技术网

sed-在变量后的第一个空格中停止

sed-在变量后的第一个空格中停止,sed,Sed,一个相当简单的困境 如何在这样一行中使用sed修改变量: _user=Det # The name of the user 将是: _user=ULTRAMONSTER # The name of the user …而不是这里出了什么问题 $ sed -i "s/_user=.* */_user=ULTRAMONSTER/" script 谢谢。例如: sed -i 's/_user= *[^ ]*/_user=ULTRAMONSTER/' script *的问题是它匹配所

一个相当简单的困境

如何在这样一行中使用
sed
修改变量:

_user=Det    # The name of the user
将是:

_user=ULTRAMONSTER    # The name of the user
…而不是这里出了什么问题

$ sed -i "s/_user=.* */_user=ULTRAMONSTER/" script
谢谢。

例如:

sed -i 's/_user= *[^ ]*/_user=ULTRAMONSTER/' script

*
的问题是它匹配所有内容,包括注释。

使用awk,您可以这样做

awk -F" " '{gsub("_user=.*","_user=ULTRAMONSTER",$1)}1' temp.txt

这很酷,但是在
*
/
之间的空格似乎将变量和注释之间的差距缩小了一倍(
sed-i's/\u user=*[^]*/\u user=ULTRAMONSTER/'script
似乎工作得很好)。@Det Yep删除了空格。当我可以的时候,我会把这个标记为答案。显然,甚至bewteen
=
*
中的空格都不是必需的,所以只要
sed-I's/\u user=*[^]*/\u user=ULTRAMONSTER/'script
就足够了。@Det注意星号应用于它前面的任何模式,所以“*`意味着“任意数量的空格”,但是
=*
表示“任意数量的等号”。