Mam plik tekstowy rozdzielany tabulatorami zawierający dane takie jak
Col 1 Col 2
1 a
1 b
1 c
1 d
1 d
2 a
2 b
3 a
itd. itp.
Chciałbym przekształcić tę strukturę w
a b c d
1 1 1 1 2
2 1 1 1 1
3 1 0 0 0
tak, że a, b, c i d stają się kolumnami; 1, 2 i 3 stają się jednym rzędem; a liczby oznaczają liczbę. Na przykład. 1 ma jeden „a” i dwa „d”.
Jak można to osiągnąć za pomocą awk lub podobnych narzędzi?
Odpowiedzi:
Niekoniecznie wydajny lub elegancki, ale powinien być łatwy do odczytania i wykonania zadania. Ponadto wiersze są kolumnami, które niekoniecznie będą drukowane w porządku posortowanym. Kluczem jest użycie
count[row,col]
symulować wielowymiarową tablicę, która nie jest bezpośrednio obsługiwana w awk. Wyszukiwarka Google dla „awk multidimensional arrays” wyświetli kilka artykułów, w tym ten .źródło
Oto rozwiązanie PERL:
źródło