在LINUX中有两个文件Xtxt和Ytxt想要以Ytxt中的第一列为标准将Xtxt中第二列包含Ytxt中的第一列内容的行都提出来生成新的文件
可以使用以下命令实现:
awk 'NR==FNR{a[$1];next} $2 in a{print}' Y.txt X.txt > new_file.txt
解释:
awk是一种文本处理工具,用于对文本进行处理和格式化。NR表示 awk 所处理的当前行数,FNR表示 awk 所处理的当前文件的行数。NR==FNR表示当前处理的是第一个文件(即 Y.txt)。{a[$1];next}表示将第一个文件的第一列存储到数组a中,并跳过后面的处理。$2 in a{print}表示如果第二个文件(即 X.txt)的第二列包含在数组a中(也就是 Y.txt 的第一列),则打印该行。>表示将输出重定向到new_file.txt文件中。
注意:如果 Y.txt 中含有空行或注释行,需要在 awk 命令中加上过滤条件,例如:
awk 'NR==FNR{if($1!="") a[$1];next} $2 in a{print}' Y.txt X.txt > new_file.txt
其中 if($1!="") 表示如果第一列不是空行,则将其存储到数组 a 中
原文地址: https://www.cveoy.top/t/topic/gEBM 著作权归作者所有。请勿转载和采集!