当 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
我知道类似的问题已被问过多次,但我无法获得用于我的文件的代码。 我的文件 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