- 论坛徽章:
- 0
|
原帖由 ground 于 2006-2-6 15:36 发表
帮我看下这个awk
awk '{gsub(/./,"& ");str=substr($0,1,1)}\
{if(NF>2){for(i=2;i<=NF;i++)printf str$i;printf "\n"}\
else{gsub(/ /,"");print}}' a
a内容如下:
...
刚刚看到ground的帖子,其中有关gsub(/./,"& ");的用法我自己是第一次遇到,非常有趣,我觉得需要单独发个帖子与大家共享一下:
gsub(/./,"& "); 这句中.代表任意一个字符,&则代表需要替换的字符本身,例如:
file文件内容如下:
12345
abcde
则
1、awk '{gsub(/. /,"& ");print}' file的结果为:
1 2 3 4 5
a b c d e
相当于在每个字符后加一个空格
2、awk '{gsub(/. /,"&&");print}' file的结果为:
1122334455
aabbccddee
相当于把每个字符复制一遍
3、awk '{gsub(/. ./,"& ");print}' file的结果为:
12 34 5
ab cd e
相当于在每两个字符后加一个空格。
4、awk '{gsub(/. ./,"&&");print}' file的结果为:
121234345
ababcdcde
相当于把每两个字符复制一遍
大家还有没有更有趣的用法,可以共享一下! |
|