linux - 使用一个文件中的部分列作为另一个文件中的搜索词

标签 linux bash shell awk grep

我有两个文件。我正在搜索的输出文件包含地震位置并具有以下格式:

19090212 1323 30.12 36 19.41 103 28.24   7.29   0.00  4 149 25.8 0.02  5.7  9.8 D -         0
19090216 1828 49.61 36 13.27 101 35.38  10.94   0.00 13  54 38.5 0.07  0.3  0.7 B           0
19090711 2114 54.11 35  1.07  99 56.42   7.00   0.00  7 177 18.7 4.00 63.3 53.2 D #         0

我想使用第一列的最后 6 位数字(即“19090418”中的“090418”)和第二列的前 3 位数字(即“0728”中的“072”)作为我的搜索词.我正在搜索的文件具有以下格式:

SC17 P   090212132329.89
X25A P   090212132330.50

AMTX P   090216182814.12
X29A P   090216182813.70
Y28A P   090216182822.36
MSTX P   090216182826.80
Y27A P   090216182831.43

在第二个文件中搜索该术语后,我需要弄清楚该部分中有多少行。所以对于这个例子,如果我正在搜索上面第二个文件显示的术语,我想知道 090212132 有 2 行,090216182 有 5 行。

这是我的第一篇文章,所以请告诉我如何提高文章的清晰度或简洁度。感谢您的帮助!

最佳答案

awk 助您一臂之力!

$ awk 'NR==FNR{a[substr($1,3) substr($2,1,3)]; next} 
              {k=substr($3,1,9)} 
        k in a{a[k]++} 
           END{for(k in a) if(a[k]>0) print k,a[k]}' file1 file2

对于您的输入文件,没有预期的输出。

关于linux - 使用一个文件中的部分列作为另一个文件中的搜索词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40474992/

相关文章:

python - 使用 Crontab 自动化 Python 脚本

c++ - 如何不从你的线程中捕获抛出?

bash - Bash 或 Shell 脚本中的转发函数声明?

c - 如何从 shell 执行库调用命令?

Android 调试桥 adb shell

linux - 按进程数和最活跃用户排名最高的用户

php - 防止同一 php 脚本出现多个实例

c - 二进制文件只有在创建指向它的符号链接(symbolic link)后运行时才能运行

bash - 使用 Bash 测试 URL 列表

linux - 使用 grep 和 cut 过滤文本文件以仅显示以  ‘m’  ‘w’ 或  ‘s’ 开头的用户名及其主目录