Jestem tutaj nowy i chcę zapytać, jak dodać rozmiary plików o tej samej nazwie? Nazwy plików różnią się od siebie, ale wycinam je, aby móc zgrupować pliki.
oto moje oryginalne pliki z rozmiarami (przykład)
sample.txt zawiera te dane:
- 12345 a_1.txt
- 12234 b_1.txt
- 32123 c_1.txt
- 11122 a_2.txt
Teraz wycinam nazwy plików wewnątrz sample.txt, aby usunąć te znaki zaczynające się od '_' (podkreślenie). Stają się tacy:
- 12345 a
- 12234 b
- 32123 c
- 11122 a
Teraz chcę dodać rozmiary wszystkich plików o tej samej nazwie, jak pokazano powyżej. Dane wyjściowe powinny wyglądać następująco:
- 23467 a
- 12234 b
- 32123 c
Proszę pomóż. Wielkie dzięki. Utknąłem tu już od wielu godzin
sample.txt
i chcesz je na wyjściu. Wygląda jak lista numerowana, więc może nie. Proszę wkleić plik i żądane wyjście jakocode sample
aby uniknąć nieporozumień.Odpowiedzi:
Zakładając, że nie ma numerów linii
sample.txt
:Możesz dodać
| sort -k 2
na końcu.EDIT1 - wyjaśnienie na żądanie:
The
cut
polecenie przecina każdą linię_
ogranicznik i zapisuje tylko pierwszą część. Zrobiłeś to już z oryginalnym plikiem.A później
awk
polecenie znajduje dwa pola w każdej linii. Nazywamy ich rozmiar i imię , aleawk
odnosi się do nich jako$1
i$2
wewnętrznie. Dla każdej linii zwiększa jeden element tablicya
(imięa
jest dowolnie wybrany i nie ma nic wspólnego z nazwą pliku w próbce). The imię$2
informuje, który element ma być zwiększany - jest to indeks; rozmiar$1
jest wartością przyrostową.awk
jest wystarczająco inteligentny, aby zainicjowaća
element z0
jak wspomniano po raz pierwszy. Dany element jest zwiększany za każdym razem, gdy jego indeks ( imię ) pojawia się jako drugie pole linii wejściowej. Na końcu (po ostatniej linii wejścia)awk
przechodzi przez każdy znany indeksa
i wypisuje wartość (która jest teraz łączny rozmiar ) i indeks ( imię ).źródło
Aby uzyskać sumę każdego pliku zaczynającego się od
a_
możesz to zrobić:du
oblicza wtedy rozmiar wszystkich plików-c
sumuje rozmiary. Grep po prostu wyodrębnia całość, a nie wszystkie pojedyncze pliki.źródło