这是一个awk脚本,它尝试根据第一列设置两个文件的差异:
BEGIN{
OFS=FS="\t"
file = ARGV[1]
while (getline < file)
Contained[$1] = $1
delete ARGV[1]
}
$1 not in Contained{
print $0
}
Run Code Online (Sandbox Code Playgroud)
这是TestFileA:
cat
dog
frog
Run Code Online (Sandbox Code Playgroud)
这是TestFileB:
ee
cat
dog
frog
Run Code Online (Sandbox Code Playgroud)
但是,当我运行以下命令时:
gawk -f Diff.awk TestFileA TestFileB
Run Code Online (Sandbox Code Playgroud)
我得到的输出就像脚本包含"in"一样:
cat
dog
frog
Run Code Online (Sandbox Code Playgroud)
虽然我不确定"不在"是否是我的意图的正确语法,但我很好奇为什么它的行为与我写"in"时的行为完全相同.
kev*_*kev 29
我找不到任何关于的文件element not in array.
试试!(element in array).
我猜:awk看作not是一个未初始化的变量,所以not被评估为一个空字符串.
$1 not == $1 "" == $1
Run Code Online (Sandbox Code Playgroud)
小智 18
我想出了这一个.(数组中的x)返回一个值,所以要做"不在数组中",你必须这样做:
if ( x in array == 0 )
print "x is not in the array"
Run Code Online (Sandbox Code Playgroud)
或者在你的例子中:
($1 in Contained == 0){
print $0
}
Run Code Online (Sandbox Code Playgroud)