【发布时间】:2012-02-22 03:45:16
【问题描述】:
我有一个 shell 变量:
all_apk_file="a 1 2.apk x.apk y m.apk"
我想用TEST替换a 1 2.apk,使用命令:
echo $all_apk_file | sed 's/(.*apk ){1}/TEST/g'
.*apk 表示以apk 结尾,{1} 表示只匹配一次,但不起作用;我只得到了原始变量作为输出:a 1 2.apk x.apk y m.apk
谁能告诉我为什么?
【问题讨论】:
-
简短的回答是 sed 是贪婪的。由于您输入了
.*,它会将前两个“apk”组合作为.*的一部分,因此仅将最后一个apk识别为最终组合。