Chinaunix

标题: 求助:一个awk语句使用if应该如何改写。 [打印本页]

作者: x-dongzi    时间: 2010-04-21 17:38
标题: 求助:一个awk语句使用if应该如何改写。
大家好。
我有两个文件A和B
其中A内容
  1. 111,111,111
  2. 222,222,222
  3. 333,333,333
  4. 444,444,444
  5. 555,555,555
复制代码
B内容
  1. 333,444,444
  2. 555,444,444
复制代码
我需要把B中第一列与A中第一列相对应的哪一行替换到A中去。也就是说,替换完之后
变成
  1. 111,111,111
  2. 222,222,222
  3. 333,444,444
  4. 444,444,444
  5. 555,444,444
复制代码
我已经写出了一个awk的命令来了,可以使用,不过还想能用if语句给写一下,因为感觉用if语句的话,比较好读一点,可是自己尝试写了一下,发现都不行,现在求教一下个人大侠,谢谢了。
下面是我写的,请问如何使用if来写呢?非常感谢。
  1. awk -F"," 'NR==FNR{a[$1]=$0} NR>FNR&&a[$1]{print a[$1]} NR>FNR&&!a[$1]{print $0}' B A
复制代码

作者: wtuter    时间: 2010-04-21 18:02
回复 1# x-dongzi


    [2]awk -F, 'NR==FNR{a[$1]=$0}NR!=FNR{if($1 in a)$0=a[$1];print $0}' 2 1  
111,111,111
222,222,222
333,444,444
444,444,444
555,444,444
[2]
[2]
[2]cat 1
111,111,111
222,222,222
333,333,333
444,444,444
555,555,555
[2]
[2]
[2]cat 2
333,444,444
555,444,444
作者: lkk2003rty    时间: 2010-04-21 18:08
回复 1# x-dongzi
  1. awk -F"," 'NR==FNR{a[$1]=$0}NR>FNR{if($1 in a) print a[$1];else print $0}' B A
复制代码

作者: x-dongzi    时间: 2010-04-21 19:14
谢谢,谢谢大家。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2