recherche

Maison  >  Questions et réponses  >  le corps du texte

Regroupez les résultats de la recherche en groupes et stockez-les sous forme de tableau d'objets

En PHP, j'utilise grep pour rechercher et compter tous les cas d'utilisation de certaines classes dans presque tous les fichiers.

\exec("grep -orE '" . $classesBarred . "' ../../front/src/components | sort | uniq -c", $allClassesCount);

String-like de $classesBarred包含类似于search-unfocused|bg-app|enlarged-window(mais plus).

Le résultat actuel est

'      2 ../../front/src/components/Actions/ActionOwner.vue:show', 
'      1 ../../front/src/components/Actions/ActionOwner.vue:action', 
'      1 ../../front/src/components/Actions/ActionOwner.vue:show', 
'      5 ../../front/src/components/Actions/ActionOwner.vue:action', 
'      1 ../../front/src/components/Actions/ActionOwner.vue:show',
....(还有几百行类似的结果)

Je dois enregistrer les résultats dans un tableau, quelque chose comme :

[
  {show: 38}, {action: 123}, {search-unfocused: 90}, {....}
]

Éditeur : @Freeman propose une solution ici, en utilisant awk

grep -orE "btn-gray|btn-outline-white" ../../front/src/components | awk -F: '{打印 }' | awk -F/ '{print $NF}' |排序| uniq-c| awk '{print "::" }'

J'ai obtenu les résultats suivants :

btn-gray::1
btn-outline-white::13

P粉198814372P粉198814372430 Il y a quelques jours534

répondre à tous(1)je répondrai

  • P粉277824378

    P粉2778243782023-09-11 20:46:24

    Oui, je peux voir que la sortie de votre code en utilisant awkgrep est réorganisée en deux colonnes, l'une est le nom de la classe et l'autre est le nombre, Le résultat est le suivant :

    search-unfocused 90
    bg-app 5
    enlarged-window 12

    Vous pouvez maintenant analyser cette sortie dans un tableau via PHP, le code est le suivant :

    $results = array();
    foreach ($allClassesCount as $line) {
      $parts = explode(" ", $line);
      $className = $parts[0];
      $count = (int)$parts[1];
      if (!isset($results[$className])) {
        $results[$className] = $count;
      } else {
        $results[$className] += $count;
      }
    }

    Le résultat du tableau est le suivant :

    [
      "search-unfocused" => 90,
      "bg-app" => 5,
      "enlarged-window" => 12,
      ...
    ]

    Mise à jour :
    Si vous insistez pour utiliser awk et sed, vous pouvez faire ceci :

    grep -orE "$classesBarred" ../../front/src/components | awk -F '/' '{print $NF}' | awk -F ':' '{print }' | sort | uniq -c | awk '{gsub(/^[ \t]+|[ \t]+$/, "", ); print "{\"""\": ""},"}' | paste -sd '' | sed 's/,$//' | awk '{print "["
    [
      {"show": 38},
      {"action": 123},
      {"search-unfocused": 90},
      {....}
    ]
    "]"}'

    Les résultats sont les suivants :

    rrreee

    Bonne chance à vous !

    répondre
    0
  • Annulerrépondre