本帖最后由 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,为什么结果不一样呢?
|