方法一:使用awk命令

命令如下:

awk 'FNR==NR{a[$1]=$0;next}{if($2 in a) print a[$2]}' X.txt Y.txt

解释:

  • FNR==NR表示对第一个文件(即X.txt)进行操作。
  • a[$1]=$0表示将X.txt文件的每一行以第一列为键,整行为值存储到数组a中。
  • next表示跳过对Y.txt文件的操作,直接开始下一次循环。
  • 如果Y.txt文件的第二列在数组a中出现过,则输出对应的X.txt文件的那一行。

方法二:使用grep命令和cut命令

命令如下:

grep -f <(cut -d ' ' -f 1 X.txt) Y.txt

解释:

  • cut -d ' ' -f 1 X.txt表示以空格作为分隔符,提取X.txt文件的第一列。
  • <(cut -d ' ' -f 1 X.txt)表示将cut命令的输出作为grep命令的输入。
  • -f选项表示指定匹配模式,-f 1表示匹配第一列。
  • Y.txt表示要从中提取内容的文件。

方法三:使用join命令

命令如下:

join -1 1 -2 2 <(sort -k1 X.txt) <(sort -k2 Y.txt)

解释:

  • sort -k1 X.txt和sort -k2 Y.txt表示将X.txt和Y.txt文件按照第一列和第二列进行排序。
  • <(sort -k1 X.txt)和<(sort -k2 Y.txt)表示将排序后的输出作为join命令的输入。
  • -1 1和-2 2表示指定X.txt文件的第一列和Y.txt文件的第二列为连接键。
  • 如果X.txt文件的第一列与Y.txt文件的第二列相同,则将两个文件的内容连接起来输出
在LINUX中根据Xtxt文件的第一列提取Ytxt文件第二列与之内容相符的行但是要保留Xtxt其他列的内容输出几个方法

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

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