嗨。我是一个新的UNIX脚本,可以有人帮助我在下面
问题描述:
我有两个文件。嗨。我是一个新的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|-|-|-|-|
有人能帮我吗/
答
我会做:
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
请为此问题选择一个更合适的标题。 – Cyrus