Kumpulan hasil carian ke dalam kumpulan dan simpan sebagai tatasusunan objek
P粉198814372
P粉198814372 2023-09-10 23:18:31
0
1
480

Dalam PHP saya menggunakan grep untuk mencari dan mengira semua kes penggunaan untuk kelas tertentu dalam hampir semua fail.

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

Seperti rentetan $classesBarred包含类似于search-unfocused|bg-app|enlarged-window(tetapi lebih banyak lagi).

Hasil semasa ialah

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

Saya perlu menyimpan hasil dalam tatasusunan, seperti:

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

Editor: @Freeman menyediakan penyelesaian di sini, menggunakan awk

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

Mendapat keputusan berikut:

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

P粉198814372
P粉198814372

membalas semua(1)
P粉277824378

Ya, saya dapat melihat bahawa output kod anda menggunakan awkgrep disusun semula kepada dua lajur, satu ialah nama kelas dan satu lagi ialah kiraan, Outputnya adalah seperti berikut:

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

Kini anda boleh menghuraikan output ini ke dalam tatasusunan melalui PHP, kodnya adalah seperti berikut:

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

Hasil tatasusunan adalah seperti berikut:

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

Kemas kini:
Jika anda berkeras untuk menggunakan awk dan sed, anda boleh melakukan ini:

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},
  {....}
]
"]"}'

Hasilnya adalah seperti berikut:

rrreee

Semoga berjaya kepada anda!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!