2
2
# edit_util.sh 文本编辑方法
3
3
#
4
4
5
- #
6
- # @PARAM:本地文件路径 @FUNC:删除行首的空格和tab.目的是搜索以key开头的关键字时是严格的
7
- # 因为如果文本中关键字前面有空格或者tab会匹配不到,虽然费时但是便于观察
8
- #
5
+ # ############################################################################
6
+ # @PARAM:本地文件路径 @FUNC:删除行首的空格和tab.目的是搜索以key开头的关键字时
7
+ # 是严格的因为如果文本中关键字前面有空格或者tab会匹配不到,虽然费时但
8
+ # 是便于观察
9
+ # ############################################################################
9
10
function format_local_file()
10
11
{
11
12
sed -i ' s/^[ \t]*//g' $1
12
13
}
13
14
15
+ # ############################################################################
16
+ # @FILE : 文本以 # 作为注释, 以 := 作为键和值的关系
14
17
#
15
18
# @PARAM: 1:path
16
19
# 2:key
17
20
# 3:value
18
21
# @FUNC : 用 1:= $param_value表示替换结果, 如果不存在则追加 >>
19
22
#
23
+ # @RET : TODO
24
+ # ############################################################################
20
25
function write_mk_file()
21
26
{
22
27
debug_func " write_mk_file in"
@@ -29,7 +34,7 @@ function write_mk_file()
29
34
local param_key=$2
30
35
local param_value=$3
31
36
32
- format_local_file $param_file
37
+ # TODO 格式化太不理智了,应该遇到#就过滤掉,然后grep查找key, 不需要是开头以排除空格的情况。 format_local_file $param_file
33
38
if grep -r ^$param_key $param_file 2>&1 1> /dev/null; then
34
39
sed -i ' /^' $param_key ' /s/\(.*\):=.*/\1:= ' $param_value ' /g' $param_file
35
40
else
@@ -39,12 +44,14 @@ function write_mk_file()
39
44
fi
40
45
}
41
46
47
+ # ############################################################################
48
+ # @FILE : 文本以 // 作为注释, 以 = 作为键和值的关系
42
49
#
43
50
# @PARAM: 1:path
44
51
# 2:key
45
52
# 3:value
46
53
# @FUNC : 用'$param_key'='$param_value'表示替换结果,如果不存在则追加 >>
47
- #
54
+ # ############################################################################
48
55
function write_txt_file()
49
56
{
50
57
debug_func " write_txt_file"
@@ -67,14 +74,16 @@ function write_txt_file()
67
74
fi
68
75
}
69
76
77
+ # ############################################################################
78
+ # @FILE : 文本以 # 作为注释, 以 空格 作为键和值的关系
70
79
#
71
80
# @PARAM: 1:path
72
81
# 2:key
73
82
# 3:value
74
83
# @FUNC : 用'key' '$param_key' '$sed_value'表示替换结果,如果不存在则追加 >>
75
84
#
76
85
# @RET @1->更新 @0->无需更新
77
- #
86
+ # ############################################################################
78
87
function write_kl_file()
79
88
{
80
89
debug_func " write_kl_file"
@@ -112,29 +121,35 @@ function write_kl_file()
112
121
fi
113
122
done < $param_file
114
123
115
- # 比较key的码值要注意可能会有 POWER WAKEUP这种两个部分构成的值
124
+ # 比较key的码值要注意不止类似有 "MENU" 还有 " POWER WAKEUP"这种多项式构成的值,但是没有第三种形式了
116
125
if [[ $flag -eq 1 ]]; then
117
126
# 这个if当中的key_num 和 入参param_key是相等的, 因为break
118
127
key_value_1=$( awk -v key_tmp=" $key_num " ' ($2==key_tmp){print $3}' $1 )
119
128
key_value_2=$( awk -v key_tmp=" $key_num " ' ($2==key_tmp){print $4}' $1 )
129
+ TODO 还不如全都是判断$3 $4 是否空,而不是判断$#
120
130
if [[ $# -eq 3 ]]; then
121
131
# 如果对应的键值是不同的,则如下方式更新[原因是kl文件可能是单项或者多项] 并将retflag置1;否则不处理保持retflag的不变
122
132
param_value=" $3 "
123
133
if [[ " $param_value " x != " $key_value_1 " x || -n " $key_value_2 " ]]; then
124
- sed -i ' /' [[:space:]]$key_num [[:space:]]' /s/.*/' key' ' $key_num ' ' $param_value ' /g' $param_file
134
+ sed -i ' /' [[:space:]]$key_num [[:space:]]' /s/.*/' key' ' $key_num ' ' $param_value ' /g' $param_file
125
135
fi
126
136
elif [[ $# -eq 4 ]]; then
127
137
# TODO
138
+ debug_error " ----"
128
139
else
129
140
debug_warn " undefined kl inner format, just support like 1 'POWER' or 2 'POWER WAKE', this case maybe 3 'POWER WAKE HELLO'"
130
141
fi
131
142
else
132
- add_kv=" key $param_key $3 $4 "
133
143
# TODO
134
144
if [[ $retflag -eq 0 ]]; then
135
145
debug_warn " Add new keycod to the file->$param_file "
136
146
fi
137
- echo $add_kv >> $param_file
147
+ if [[ $# -eq 3 ]]; then
148
+ add_kv=" key $param_key $3 "
149
+ elif [[ $# -eq 4 ]]; then
150
+ add_kv=" key $param_key $3 $4 "
151
+ fi
152
+ echo " $add_kv " >> $param_file
138
153
fi
139
154
140
155
return $retflag
@@ -163,13 +178,15 @@ function write_kl_file()
163
178
# fi
164
179
}
165
180
181
+ # ############################################################################
182
+ # @FILE : 文本以 ; 作为注释, 以 = 作为键和值的关系, 含有[]这种块区域划分
166
183
#
167
184
# @PARAM: 1:path
168
185
# 2:section fex文件中括号内选项 boot_init_gpi
169
186
# 3:item 为item标签下的子项,如pin脚
170
187
# 4:value
171
188
# @FUNC :
172
- #
189
+ # ############################################################################
173
190
function write_fex_file()
174
191
{
175
192
debug_func " write_fex_file"
@@ -241,12 +258,12 @@ function write_fex_file()
241
258
fi
242
259
}
243
260
244
- #
261
+ # ############################################################################
245
262
# @PARAM: 1:path
246
263
# 2:key
247
264
# 4:value
248
265
# @FUNC :
249
- #
266
+ # ############################################################################
250
267
function write_cfg_file()
251
268
{
252
269
debug_func " write_cfg_file"
0 commit comments