uboot里面的一个sed正则表达式怎么理解?

[复制链接]
786|0
手机看帖
扫描二维码
随时随地手机跟帖
kamen588|  楼主 | 2018-7-13 20:49 | 显示全部楼层 |阅读模式
本帖最后由 kamen588 于 2018-7-13 20:51 编辑

将uboot 1.1.6 里面的一部分摘录整理成一个Makefile文件:

Makefile:

VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 6
EXTRAVERSION =
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

VERSION_FILE = version_autogenerated.h
BOARD  = 100ask24x0
         
all:     
        sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE)|sed -e 's/"[     ]*$$/ for $(BOARD) board"/'



在Makefile 文件同级目录下再放一个version_autogenerated.h文件,version_autogenerated.h内容如下:
#define U_BOOT_VERSION "U-Boot 1.1.6"


在Ubuntu终端执行make 结果如下(红色部分):
book@www.100ask.org:/work/hfl$ make
sed -n -e 's/.*U_BOOT_VERSION//p' version_autogenerated.h|sed -e 's/"[     ]*$/ for 100ask24x0 board"/'
"U-Boot 1.1.6 for 100ask24x0 board"

其中sed -n -e 's/.*U_BOOT_VERSION//p' version_autogenerated.h 我能理解就是用空替换#define U_BOOT_VERSION "U-Boot 1.1.6"中的#define U_BOOT_VERSION ,结果是"U-Boot 1.1.6"。但是后面的sed -e 's/"[     ]*$$/ for $(BOARD) board"/'
我就不理解了谁能给我解释下这个正则表达式的含义。其中"[     ]*$$/怎么理解。

为了理解我又做了个实验直接在终端输入如下命令:
book@www.100ask.org:/work/hfl$ echo "U-Boot 1.1.6 "|sed -e 's/"[     ]*$$/ for 100ask24x0 board"/'
U-Boot 1.1.6


执行结果是 U-Boot 1.1.6 ,不是 "U-Boot 1.1.6 for 100ask24x0 board",我只不过用"U-Boot 1.1.6 "替换了sed -n -e 's/.*U_BOOT_VERSION//p' version_autogenerated.h,为什么结果不一样呢?


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

240

帖子

3

粉丝