2009-09-23 10 views
0

J'utilise les deux commandes suivantes pour voir mes tables de binlogs.en utilisant OU dans awk

mysqlbinlog mysql-bin.000016 | awk '/session/,/;/' | more 

mysqlbinlog mysql-bin.000016 | awk '/session_log/,/;/' | more 

Comment puis-je voir les deux lignes de table dans une instruction unique?

Répondre

1

Je pense que ce dont vous avez besoin est: '?'

mysqlbinlog mysql-bin.000016 | awk '/session(_log)?/,/;/' | more

Utilisation pour montrer que '_log' est une option avec ou sans.

+0

Ceci est très utile. Mais mes noms de table peuvent être n'importe quoi. (comme abc, pqrst) Et je veux voir environ 5 tables à la fois. – shantanuo

+1

Donc, utilisez | = ou comme ceci: '(nom1 | nom2 | nom3 | nom4 | nom5)'. :-D – NawaMan

+0

Oui. C'est ce que je cherchais. Mais est-il possible de regrouper les requêtes de chaque table? Je veux dire est-il possible de trouver d'abord name1 puis name2, name3 après cela et name4 last? – shantanuo

1

Pour la sortie de groupe, que diriez-vous:

mysqlbinlog mysql-bin.000016 | awk ' 
    !m { if (match($0, /(name1|name2|name3|name4|name5)/) 
      m=substr($0,RSTART,RLENGTH) 
     } 
    /;/ { m = "" } 
    m { array[m] = array[m] "\n" $0 } 
    END { for (m in array) print array[m] }' 
Questions connexes