在 Linux 中,可以使用以下 awk 命令将文件 X.txt 中第二列包含 Y.txt 中第一列内容的行都提出来,并生成新的文件内容:

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 使用 awk 命令提取符合条件的行到新文件

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

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