我正在尝试替换文件中的一行,该行在不同的计算机上可能有所不同。例如,该行可以类似于以下示例:testLine=14
testLine=320
testLine=abc
我知道每次尝试使用sed
替换行时,这些行都不相同,但额外的行将附加在末尾。我要使用的命令是:sed -i 's/testLine=*/testLine=test/g' fileName
此命令将导致上述示例变为:testLine=test14
testLine=test320
testLine=testabc
我希望这些行仅等于testLine=test
,并删除等号的右边存在的内容。我需要在那些会产生我所寻求的结果的论点上加上什么?
最佳答案
您忘记在.
之前添加*
sed -i 's/testLine=.*/testLine=test/' fileName
或者
sed -i 's/^testLine=.*/testLine=test/' fileName
regex
testLine=*
匹配字符串testLine
加上以下=
零次或多次。所以当它到达=
符号时停止。但是testLine=.*
将匹配字符串testLine
加上以下零个或多个字符。在您的情况下,上面的regex将用testLine=test
替换整个行