- 论坛徽章:
- 0
|
本帖最后由 ywlscpl 于 2012-03-09 08:38 编辑
第一题:
- q:有区别
- 一.设置后FS这个内置变量不一样
- ywlscpl@ubuntu:~$ awk -F ' ' 'BEGIN{print "#"FS"#"}'
- # #
- ywlscpl@ubuntu:~$ awk -F '[ ]' 'BEGIN{print "#"FS"#"}'
- #[ ]#
- ywlscpl@ubuntu:~$ awk -F '[ ]+' 'BEGIN{print "#"FS"#"}'
- #[ ]+#
- 二.域分隔符不一样
- -F ' ' #以任意个(>=1)连续的空格或tab为分隔符,等同于-F '[ \t]+'
- -F '[ ]' #以单个空格为分隔符
- -F '[ ]+' #以任意个(>=1)连续的空格为分隔符
复制代码 第二题:
- q:不一样
- 虽都为"地址范围": 地址1,地址2
- awk在匹配时允许地址1,地址2匹配到相同行
- ywlscpl@ubuntu:~$ cat file
- foo1
- x
- foo1 foo2
- y
- foo1 foo2
- z
- foo2
- ywlscpl@ubuntu:~$ awk '/foo1/,/foo2/' file
- foo1
- x
- foo1 foo2
- foo1 foo2
- ywlscpl@ubuntu:~$ sed -n '/foo1/,/foo2/p' file
- foo1
- x
- foo1 foo2
- foo1 foo2
- z
- foo2
复制代码 第三题:- echo "a b c e f,1 2 3" |awk -F, '{split($1,m1," ");split($2,m2," ");for (i
- in m1) for (j in m2) print m1[i]m2[j]"\n"m2[j]m1[i]}'
复制代码 第四题- echo aaabcccaaabbbccc | awk -F '' '{for (i=1;i<=NF;i++){if (!a[$i]++) b[++n]=$i;else
- b[n]=b[n]$i}}END{for (i=1;i<=n;i++) printf b[i]}'
复制代码 第六题
q:shell进行命令重组时,连续多个空格被解释为IFS
第七题- awk -v RS='c|\n' '/a/{T=1}T{printf $0 RT}' file
复制代码 第八题- seq 9 | awk -F '\n' -v RS= '{for (i=1;i<NF;i++) print $i,$(i+1),$(i+2)}'
复制代码 |
|