- 论坛徽章:
- 0
|
分析2楼
awk '/^Mapping/{if(a){print a};a=$4}/^col/{a=a" "$3}END{print a}' file
结论如下:
#我的文件叫做,100.txt ,及上文中的 file
# Mapping开头的行,整行取出
# if 语句,定义变量a ,赋值 $4也就是该行第四列的值, 最后打印 值
#此处不写if 直接print $4 也是可以的
[root@localhost shell]# awk '/^Mapping/{if(a){print a};a=$4}' 100.txt
insert
updata
insert
insert
#继续实验后半句。
#为什么要引入中间变量a,
#a 由两部分组成,前部分取值,后部分取值,然后装配在一起。共同构成最后的a
#a 使用的是编程语言的原理。 前部分 取值10 ,后部分取值20 。然后 a=10 a = a + 20 ,从而得到最后的30
awk '/^Mapping/{if(a){print a};a=$4}/^col/{a=a" "$3}END{print a}' 100.txt
#awk 循环范围,从第一行到尾行,通过条件语句限制,从而得出结论
#循环到第三行,匹配 ^Mapping,取出第三行
#if(a){print a};a=$4 执行:取出该行第四列。并赋值变量a , 此时a = "insert"
#循环到第四行,匹配^col ,执行:取出第四行
#第四行执行:a=a" "$3 a + 空格 + 第四行第三列值 ,赋值给a ,此时a="insert 1 "
#循环到第五行,匹配^col ,执行:取出第五行
#第五行执行:a=a" "$3 a + 空格 + 第五行第三列值 ,赋值给a ,此时a="insert 1 aaa "
#以此类推
#第七行 得到 a="insert 1 aaa bbb ccc"
#循环到第9行,匹配 ^Mapping,此时前半句得到第二次匹配。这里我也不清楚,此时执行END{print a},打印出 insert 1 aaa bbb ccc 重新赋值a="updata"
#总结,前半句发生变化时候,要执行一次end 打印已有的结果。再往下循环
[root@localhost shell]# awk '/^Mapping/{if(a){print a};a=$4}/^col/{a=a" "$3}END{print a}' 100.txt
insert 1 aaa bbb ccc
updata 2 ddd eee fff
insert 3 hhh eeade fdafff
insert 4 dfafaf dafaf 你好
delete 5 afaf adf 2faf
[root@localhost shell]# cat -n 100.txt
1 ================start==========================
2 Problem replicate app.table1
3 Mapping problem with insert record
4 col1 = 1
5 col2 = aaa
6 col3 = bbb
7 col4 = ccc
8 Problem replicate app.table1
9 Mapping problem with updata record
10 col1 = 2
11 col2 = ddd
12 col3 = eee
13 col4 = fff
14 Problem replicate app.table1
15 Mapping problem with insert record
16 col1 = 3
17 col2 = hhh
18 col3 = eeade
19 col4 = fdafff
20 Problem replicate app.table1
21 Mapping problem with insert record
22 col1 = 4
23 col2 = dfafaf
24 col3 = dafaf
25 col4 = 你好
26
27 Problem replicate app.table1
28 Mapping problem with delete record
29 col1 = 5
30 col2 = afaf
31 col3 = adf
32 col4 = 2faf
|
|