Gruppieren Sie Suchergebnisse in Gruppen und speichern Sie sie als Array von Objekten
P粉198814372
P粉198814372 2023-09-10 23:18:31
0
1
478

In PHP verwende ich grep, um alle Anwendungsfälle für bestimmte Klassen in fast allen Dateien zu suchen und zu zählen.

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

Stringartig von $classesBarred包含类似于search-unfocused|bg-app|enlarged-window(aber mehr).

Das aktuelle Ergebnis ist

'      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',
....(还有几百行类似的结果)

Ich muss die Ergebnisse in einem Array speichern, etwa so:

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

Herausgeber: @Freeman bietet hier eine Lösung mit awk

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

Habe folgende Ergebnisse erhalten:

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

P粉198814372
P粉198814372

Antworte allen(1)
P粉277824378

是的,我可以看到,你的代码使用 awkgrep 的输出重新排列为两列,一列是类名,另一列是计数, 输出结果如下:

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

现在你可以通过 PHP 将这个输出解析为一个数组,代码如下:

$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;
  }
}

数组的结果如下:

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

更新:
如果你坚持使用 awk 和 sed,你可以这样做:

grep -orE "$classesBarred" ../../front/src/components | awk -F '/' '{print $NF}' | awk -F ':' '{print $2}' | sort | uniq -c | awk '{gsub(/^[ \t]+|[ \t]+$/, "", $2); print "{\""$2"\": "$1"},"}' | paste -sd '' | sed 's/,$//' | awk '{print "["$0"]"}'

结果如下:

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

祝你好运!

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!