如何从多个寄存器的同一行中查找 2 个或多个值

如何从多个寄存器的同一行中查找 2 个或多个值

我有一个包含 128420 个寄存器的文件。但是我需要找到 2 个在一行、两行或 N 行中匹配的值。

我需要在同一行中找到像 59708 和 27073 这样的值

这是一个例子。

我有一个名为location_2020_01_10_11_12_17.dat

内部存在3个寄存器

3G      COF9708 59708   334     020     28.219  100.9       0       NO TOP  8       U1900   BBBBB  8      AMV    27073   \N      \N      \N      \N      59708   \N      WCO3557 \N      \N      \N      \N      XXXXXXXX        4       TC  FALSE

3G      MXZ9708 59708   334     020     18.6841 997        0       NO TOP  8       U850    AAAAAA        36012   \N      \N      \N      \N      59708   \N      WMX9708 \N      \N      \N      \N       Sin_Municipio   XXXXXXXXXX        9       TX  FALSE 

2G      MX9708Z 59708   334     020     18.6841 996        0       NO TOP  Z       G850    AAAAAA        1227    \N      \N      \N      MX9708  59708   \N      \N      \N      \N      \N      \N       Sin_Municipio   YYYYYYYYYYY        9       MA  FALSE

我用过

grep -E -- '59708|27073' cell_location_2020_01_10_11_12_17.dat

egrep '59708|27073' cell_location_2020_01_10_11_12_17.dat

但不起作用。

您能否仅分享有关显示 1 结果的任何想法

3G COF9708 59708 334 020 28.219 100.9 0 NO TOP 8 U1900 BBBBB 8 AMV 27073 \N \N \N \N 59708 \N WCO3557 \N \N \N \N XXXXXXXX 4 TC FALSE

答案1

您希望两个字符串匹配但不知道它们的顺序?尝试

grep '59708.*27073\|27073.*59708' file
3G COF9708 59708 334 020 28.219 100.9 0 NO TOP 8 U1900 BBBBB 8 AMV 27073 \N \N \N \N 59708 \N WCO3557 \N \N \N \N XXXXXXXX 4 TC FALSE

答案2

您可能需要在模式中包含分隔符,以便 59708 不会与 859708 或 597083 进行错误匹配。

你可以使用 awk:

awk '/ 27073 / && / 59708 /' location_2020_01_10_11_12_17.dat

相关内容