2017-03-09 54 views
-2

我有两个文件。嗨。我是一个新的UNIX脚本,可以有人帮助我在下面

文件1--这是SQL生成文件|分隔符

sabari|27|22-12-1990|CHENNAI| 
Siva|29|13-11-1989|CHENNAI| 

文件2 - 我已经创建了硬核文件

Sabari|-|-|-|-| 

Siva|-|-|-|-| 

Ravi|-|-|-|-| 

Bali|-|-|-|-| 

我想比较,如果没有在F1中的值从文件-2将文件-1的值。

期望输出把

sabari|27|22-12-1990|CHENNAI| 

Siva|29|13-11-1989|CHENNAI| 

Ravi|-|-|-|-| 

Bali|-|-|-|-| 

有人能帮我吗/

+1

请为此问题选择一个更合适的标题。 – Cyrus

回答

0

我会做:

awk '{k=tolower($1)}NR==FNR{a[k]=$0;next} k in a{$0=a[k]}1' FS=\| file1 file2 

做一个传过来的第一个文件,存储一切都在内存散列的第一项。然后通过第二个文件,检查该行是否在第一个文件中给出,并在该文件被打印出来时打印该行。 “tolower”只是比较不区分大小写。

也许是更清晰的写为:

awk '{k=tolower($1)}NR==FNR{a[k]=$0;next}{print k in a ? a[k] : $0}' FS=\| file1 file2 

的NR == FNR技术是从第一个输入文件预加载数据的常用方法。

+0

[sabarinathan] awk'{k = tolower($ 1)} NR == FNR {a [k] = $ 0; next} {print k in a? a [k]:$ 0}'FS = \ | MF_STATUS.txt JOBNULL.txt awk:第1行附近的语法错误 awk:第1行附近的非法声明 – sabarinahtan

相关问题