📅  最后修改于: 2023-12-03 15:24:58.815000             🧑  作者: Mango
在 Bash 中,有时候我们需要比较两个文件中的列值,以判断它们是否相同。如果相同,我们可能需要打印出这些行。本文将介绍如何在 Bash shell 中实现这个操作。
awk -F ',' 'NR==FNR{a[$1];next}($1 in a){print}' file2.txt file1.txt
这段代码会从 file2.txt
文件中读取所有行,并将第一列所有的值存储到一个数组 a
中。接下来,它会读取 file1.txt
文件中的所有行,并判断其中的第一列值是否在数组 a
中。如果存在,就打印这一行。
grep -wFf file2.txt file1.txt
这段代码会从 file2.txt
文件中读取所有行,并将它们作为模式在 file1.txt
文件中进行搜索。如果模式匹配成功,就打印出相应的行。
join -t ',' -1 1 -2 1 file1.txt file2.txt
这段代码会将 file1.txt
文件和 file2.txt
文件中的所有行进行连接操作。连接的依据是两个文件中的第一列相等。如果连接成功,就打印出相应的行。需要注意的是,join
命令要求两个文件都必须是已经排过序的,否则可能会得到错误的结果。
以上就是三种在 Bash shell 中判断一个文件中的列值是否在另一个文件中的操作。使用这些方法,你可以轻松地比较两个文件中的内容,并进行相应的处理。