我有两个文件,我试图逐行比较每行中的字符串。 File1 仅包含 6 个字符的字符串前缀,而 File2 包含 12 个字符的字符串。如何循环遍历 File2 以查找以 File1 中的 6 个字符开头的字符串并将其输出到文件?
文件1
002379
005964
文件2
002379ED6212
003354EB4591
004679BB2185
005964AB3379
005964DB5496
最佳答案
这个 awk 单行代码可以满足您的需求:
awk 'NR==FNR{a[$0];next}{for(i in a)if(substr($0,1,6)==i)print}' file1 file2
NR==FNR
仅适用于第一个文件。 file1
的每一行都作为一个键存储在数组a
中。 next
跳过另一个 block 。对于第二个文件中的每条记录,遍历 a
中的每个键并比较前 6 个字符。如果相同,则打印记录。
输出:
002379ED6212
005964AB3379
005964DB5496
关于string - 用于比较具有不同长度字符串的 2 个文件的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712743/