Regroupez les résultats de la recherche en groupes et stockez-les sous forme de tableau d'objets
P粉198814372
P粉198814372 2023-09-10 23:18:31
0
1
474

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粉198814372
P粉198814372

répondre à tous(1)
P粉277824378

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 !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!