当 file1 第一列中的多个术语与 file2 中的第一列匹配时,awk 只打印出一个匹配行

awk printed out only one matching line when multiple terms in the first column in file1 matched to the first column in file2

我知道类似的问题已被问过多次,但我无法获得用于我的文件的代码。 我的文件 1 中有一列,文件 2 中有多列。我想做的与此 post 中的人所问的完全一样,即如果文件 1 中的第 1 列与文件 2 中的第 1 列匹配, 打印出文件 2 中的整行。 https://unix.stackexchange.com/questions/334448/if-column-matches-another-file-print-every-line-with-match-awk-grep?noredirect=1&lq=1

我尝试了 awk 'NR==FNR{c[]++;next};c[]>0' file1 file2 并尝试按照代码重新格式化我的文件,但没有成功。

tr '\r' '\n' < file1 > file1.new
mv file1.new file1
tr '\r' '\n' < file2 > file2.new
mv file2.new file2

我遇到的问题是 awk 只打印出一个匹配行(而不是第一个匹配行)。我确定有多个匹配行,因为我用 grep 检查了它。

我想知道是否有人知道它的潜在原因。谢谢您的帮助!!!

能否请您尝试关注。

第一种解决方案:awk本身使用控制M逻辑的移除。

awk '{gsub(/\r/,"")} NR==FNR{c[]++;next};c[]>0' file1

第二个解决方案:通过tr删除它们然后使用awk(试图修复OP的尝试本身)。

tr -d '\r' < file1 > file1.new
tr -d '\r' < file2 > file2.new