我有一个包含 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