如何测试一个字符串在另外一个字符串里?比如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里标记出来。
-
$ awk '{getline v<"a";for(i=1;i<=NF;i++)if(index(v,$i))$i="-"$i}1' b
-
-97 -19 -18 -36 -18 28 71
-
53 24 33 -48 -13 -66 25
-
55 -12 -11 75 36 -23 19
[解析]
index(s, t) Returns the index of the string t in the string s.
返回t字符串存在与s字符串中位置的正整数,不存在则返回0。
-
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
阅读(20833) | 评论(3) | 转发(1) |