【发布时间】:2017-01-17 17:00:16
【问题描述】:
我不确定我做错了什么,但我的 awk 命令肯定犯了一些错误。
我有两个文件,fileA 包含名称
文件A
Abhi
Roma
GiGi
KaKa
FileB 包含具有名称的其他数据
Abhi 23 Pk
DaDa 43 Gk
Roma 33 Kk
PkPk 22 Aa
现在,我尝试打印 fileA 中不存在的所有名称的详细信息。
for i in `cat FileA` ; do cat FileB | awk '{ if ($1!='$i') print $0_}'>> Result; done
我得到的是
Abhi 23 Pk
DaDa 43 Gk
Roma 33 Kk
PkPk 22 Aa
Abhi 23 Pk
DaDa 43 Gk
Roma 33 Kk
PkPk 22 Aa
Abhi 23 Pk
DaDa 43 Gk
期望的输出
DaDa 43 Gk
PkPk 22 Aa
谁能帮我找出错误。
谢谢
【问题讨论】:
-
在将您的代码更新为
while IFS= read -r i; do awk -v i="$i" '$1 != i {print $0}' FileB; done < FileA > Result后,如有必要,更新您的问题。 (见Bash FAQ 001。) -
像我这样的人请注意:当您在 awk 表达式中有
!=时,请使用单引号' != '而不是双引号" != "。
标签: bash if-statement awk