Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56822
  • 博文数量: 28
  • 博客积分: 84
  • 博客等级: 民兵
  • 技术积分: 162
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-09 17:47
个人简介

try vuuv.github.io or somewhere else.

文章分类

全部博文(28)

文章存档

2013年(1)

2012年(5)

2011年(22)

我的朋友

分类:

2011-10-07 14:59:48

原文地址:awk之index()函数 作者:zooyo

    如何测试一个字符串在另外一个字符串里?比如a="11",b="11 22 33 44",如何判断a是否存在与b中?这就需要用index()函数。我们讲一个例子:
 
文件a:
36  18  19  70  97  
66  71  13  23  48  
23  68  88  11  12
 
文件b:
97  19  18  36  18  28  71
53  24  33  48  13  66  25
55  12  11  75  36  23  19
 
要求文件a里对应文件b里的行,如果文件a里出现过的数字,在文件b里标记出来。
 
  1. $ awk '{getline v<"a";for(i=1;i<=NF;i++)if(index(v,$i))$i="-"$i}1' b
  2. -97 -19 -18 -36 -18 28 71
  3. 53 24 33 -48 -13 -66 25
  4. 55 -12 -11 75 36 -23 19

[解析]

index(s, t)        Returns the index of the string t in the string s.

返回t字符串存在与s字符串中位置的正整数,不存在则返回0。

 

  1. awk 'ARGIND==1{for(i=1;i<=NF;i++)a[FNR","$i];next}{for(i=1;i<=NF;i++){FNR","$i in a?$i="-"$i:0}}1' a b
阅读(728) | 评论(0) | 转发(0) |
0

上一篇:awk之过滤汉字

下一篇:awk之getline函数运用

给主人留下些什么吧!~~