同じ単語を共有するすべての行を一致させる方法

同じ単語を共有するすべての行を一致させる方法

Visual Studio Codeで統合検索機能を使用しています。検索条件には正規表現の検索方法があります。

最初のフィールドが同じMACアドレス(xx:xx:xx:xx:xx)を持つ行と同じ「Mamba」という単語を含む行に対してCSV(Visual Studio Code IDEを使用)を検索しようとしています。 :xx)行に「Mamba」が含まれている場合?

正規表現を使用して解析する必要がある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アドレスを持つ他の行の前にはありません。

ベストアンサー1

私の理解は

  • すべての試合マンバ、マイクを覚えて
  • Macに従ってください

私はこれを持ってきました awk

awk -F, '$1=="Mamba" {  m[$2]=NR ; } $2 in m { print ;}'

どこ

  • -F,,区切り文字として使用
  • $1=="Mamba" { m[$2]=NR ; }m配列にMambaのMacを覚えてください
  • $2 in m { print ;}一致すれば印刷

より短い形式で提案されているように

awk -F, '$1=="Mamba"{ m[$2] } $2 in m'
  • 設定は不要m[$2]
  • 暗黙の{print}条件$2 in m

Mambaと一致する前にmacが表示された場合、一致するものはありません。

データ

,1C:28:AF:8E:73:24,-77,52,11:21:17
Mamba,1C:28:AF:8E:73:24,-69,6,11:21:27

最初の行はキャプチャされません。

おすすめ記事