Text-Processing
如何匹配共享相同單詞的所有行
我在 Visual Studio Code 中使用集成搜尋功能。在搜尋條件中有搜尋事物的正則表達式方式。
我正在嘗試搜尋完整的 CSV(使用 Visual Studio Code IDE)、包含單詞“Mamba”的行的第一個欄位的完全匹配以及具有相同 MAC 地址的行(xx:xx:xx:xx:xx:xx ) 如果該行包含“Mamba”?
我有需要使用 regEx 解析的 CSV。
Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27 Mamba,1C:28:AF:8E:73:24,-68,6,11:21:29 Mamba,1C:28:AF:8E:75:20,-69,6,11:21:27 Mamba,1C:28:AF:8E:75:20,-68,6,11:21:29 ,1C:28:AF:8E:73:31,-73,52,11:21:12 ,1C:28:AF:8E:75:32,-75,52,11:21:14 ,1C:28:AF:8E:73:24,-77,52,11:21:17 ,1C:28:AF:8E:73:24,-73,52,11:21:12 ,1C:28:AF:8E:75:32,-75,52,11:21:14 ,1C:28:AF:8E:75:20,-77,52,11:21:17 eduroam,8C:7A:15:55:58:18,-88,6,11:21:12 eduroam,8C:7A:15:55:58:18,-88,6,11:21:14 eduroam,8C:7A:15:55:58:18,-88,6,11:21:17
應用正則表達式後,我應該選擇這個作為結果:
Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27 Mamba,1C:28:AF:8E:73:24,-68,6,11:21:29 Mamba,1C:28:AF:8E:75:20,-69,6,11:21:27 Mamba,1C:28:AF:8E:75:20,-68,6,11:21:29 ,1C:28:AF:8E:73:24,-77,52,11:21:17 ,1C:28:AF:8E:73:24,-73,52,11:21:12 ,1C:28:AF:8E:75:20,-77,52,11:21:17
注意:包含搜尋字元串/模式“Mamba”的行不在具有相同 MAC 地址的其他行之前。
我的理解是
- 與Mamba保持一致,記住 mac
- 與那些 mac 保持一致
我帶著這個 awk
awk -F, '$1=="Mamba" { m[$2]=NR ; } $2 in m { print ;}'
在哪裡
-F,
用作,
分隔符$1=="Mamba" { m[$2]=NR ; }
記得在陣m
列曼巴的mac$2 in m { print ;}
如果匹配,列印正如建議的更短的形式
awk -F, '$1=="Mamba"{ m[$2] } $2 in m'
- 無需設置
m[$2]
- 隱含
{print}
條件$2 in m
請注意,如果 mac 在與 Mamba 匹配之前出現,它將不匹配
如果數據是
,1C:28:AF:8E:73:24,-77,52,11:21:17 Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27
第一行不會被抓住