string - 用于比较具有不同长度字符串的 2 个文件的 Bash 脚本

标签 string bash for-loop

我有两个文件,我试图逐行比较每行中的字符串。 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/

相关文章:

Python:尝试将字符串转换为 int,对于以 10 为基数的 int(),出现 int 无效文字错误: ''

php - 重新排序多维数组,以便每 4 行出现具有特定列值的行

python - 单独使用 while 循环的素数生成器的逻辑错误

python - Django 应用找不到环境变量

linux - 对于文件中的每一行同步执行命令并保存到另一个文件的换行符

Java:查找两个字符串中的共同字符

c - 哪种排序算法对 c 中具有唯一元素的结构数组快速

string - 在包含子字符串的字符串集中查找字符串的快速方法

java - 赋值和创建字符串实例有什么区别?

windows - 用 'sed' 修改后是否需要关闭文件?