可以使用以下命令实现:

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

在LINUX中有两个文件Xtxt和Ytxt想要以Ytxt中的第一列为标准将Xtxt中第二列包含Ytxt中的第一列内容的行都提出来生成新的文件

原文地址: https://www.cveoy.top/t/topic/gEBM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录