Poniżej przedstawiono niektóre scenariusze, w których może być konieczne usunięcie białych znaków:
- Aby ponownie sformatować kod źródłowy
- Aby wyczyścić dane
- Aby uprościć dane wyjściowe wiersza poleceń
Możliwe jest ręczne usuwanie białych znaków, jeśli plik zawiera tylko kilka wierszy. Ale w przypadku pliku zawierającego setki wierszy trudno będzie ręcznie usunąć wszystkie spacje. W tym celu dostępne są różne narzędzia wiersza poleceń, w tym sed, awk, cut i tr. Wśród tych narzędzi awk jest jednym z najpotężniejszych poleceń.
Co to jest awk?
Awk to potężny i użyteczny język skryptowy używany do manipulacji tekstem i generowania raportów. Polecenie awk jest skrócone za pomocą inicjałów każdej z osób (Aho, Weinberger i Kernighan), którzy je stworzyli. Awk umożliwia definiowanie zmiennych, funkcji numerycznych, łańcuchów i operatorów arytmetycznych; tworzyć sformatowane raporty; i więcej.
W tym artykule wyjaśniono użycie polecenia awk do przycinania białych znaków. Po przeczytaniu tego artykułu dowiesz się, jak używać polecenia awk do wykonywania następujących czynności:
- Przytnij wszystkie białe znaki w pliku
- Przytnij wiodące białe znaki
- Przytnij końcowe spacje
- Przytnij początkowe i końcowe spacje
- Zamień wiele spacji na pojedynczą spację
Polecenia w tym artykule zostały wykonane na Ubuntu 20.04 Ogniskowy system Fossa. Jednak te same polecenia można wykonać również w innych dystrybucjach Linuksa. Do uruchamiania poleceń opisanych w tym artykule użyjemy domyślnej aplikacji Terminal Ubuntu. Możesz uzyskać dostęp do terminala za pomocą skrótu klawiaturowego Ctrl+Alt+T.
W celach demonstracyjnych użyjemy przykładowego pliku o nazwie „sample.tekst.”aby wykonać przykłady podane w tym artykule.
Wyświetl wszystkie spacje w pliku
Aby wyświetlić wszystkie spacje obecne w pliku, prześlij dane wyjściowe polecenia cat do polecenia tr w następujący sposób:
$ próbka kota.tekst | tr " " "*" | tr "\t" "&"To polecenie zastąpi wszystkie spacje w podanym pliku znakiem (*) (*). Po wprowadzeniu tego polecenia będziesz mógł wyraźnie zobaczyć, gdzie w pliku znajdują się wszystkie białe znaki (w tym zarówno początkowe, jak i końcowe spacje).
Znaki * na poniższym zrzucie ekranu pokazują, gdzie w przykładowym pliku znajdują się wszystkie spacje. Pojedynczy * reprezentuje pojedynczą spację.
Przytnij wszystkie białe spacje
Aby usunąć wszystkie białe spacje z pliku, potocz polecenie out of cat do polecenia awk w następujący sposób:
$ próbka kota.tekst | awk ' gsub(//,""); drukuj 'Gdzie
- gsub (oznacza globalne podstawienie) jest funkcją podstawienia
- / / reprezentują białe znaki
- „” nie reprezentuje nic (przyciąć ciąg)
Powyższe polecenie zastępuje wszystkie spacje (//) niczym („”).
Na poniższym zrzucie ekranu widać, że wszystkie spacje, w tym początkowe i końcowe spacje, zostały usunięte z danych wyjściowych.
Przytnij wiodące białe znaki
Aby usunąć z pliku tylko początkowe spacje, należy potoku polecenie out of cat do polecenia awk w następujący sposób:
$ próbka kota.tekst | awk ' sub(/^[ \t]+/, ""); drukuj 'Gdzie
- pod jest funkcją substytucji
- ^ reprezentuje początek ciągu
- [ \t]+ reprezentuje jedną lub więcej przestrzeni
- „” nie reprezentuje nic (przyciąć ciąg)
Powyższe polecenie zastępuje jedną lub więcej spacji na początku ciągu (^[ \t]+ ) niczym („”), aby usunąć wiodące białe znaki.
Na poniższym zrzucie ekranu widać, że wszystkie wiodące spacje zostały usunięte z danych wyjściowych.
Możesz użyć następującego polecenia, aby sprawdzić, czy powyższe polecenie usunęło wiodące spacje:
$ próbka kota.tekst | awk ' sub(/^[ \t]+/, ""); drukuj ' | tr " " "*" |tr "\t" "&"
Na poniższym zrzucie ekranu wyraźnie widać, że usunięto tylko wiodące spacje.
Przytnij końcowe spacje
Aby usunąć z pliku tylko końcowe spacje, należy potoku polecenie out of cat do polecenia awk w następujący sposób:
$ próbka kota.tekst | awk ' sub(/[ \t]+$/, ""); drukuj 'Gdzie
- pod jest funkcją substytucji
- [ \t]+ reprezentuje jedną lub więcej przestrzeni
- $ reprezentuje koniec łańcucha
- „” nie reprezentuje nic (przyciąć ciąg)
Powyższe polecenie zastępuje jedną lub więcej spacji na końcu ciągu ([ \t]+ $) niczym ( „”), aby usunąć końcowe spacje.
Możesz użyć następującego polecenia, aby sprawdzić, czy powyższe polecenie usunęło końcowe spacje:
$ próbka kota.tekst | awk ' sub(/[ \t]+$/, ""); drukuj ' | tr " " "*" | tr "\t" "&"Na poniższym zrzucie ekranu wyraźnie widać, że końcowe spacje zostały usunięte.
Przycinaj zarówno wiodące, jak i końcowe spacje
Aby usunąć z pliku zarówno początkowe, jak i końcowe spacje, należy przekazać polecenie out of cat do polecenia awk w następujący sposób:
$ próbka kota.tekst | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); drukuj 'Gdzie
- gsub jest globalną funkcją podstawienia
- ^[ \t]+ reprezentuje wiodące białe znaki
- [ \t]+$ reprezentuje końcowe spacje
- „” nie reprezentuje nic (przyciąć ciąg)
Powyższe polecenie zastępuje spacje wiodącą i końcową (^[ \t]+ [ \t]+$) bez niczego („”), aby je usunąć.
Aby ustalić, czy powyższe polecenie usunęło zarówno początkowe, jak i końcowe spacje z pliku, użyj następującego polecenia:
$ próbka kota.tekst | awk ' gsub(/^[ \t]+|[ \t]+$/, ""); drukuj ' |tr " " "*" | tr "\t" "&"
Z poniższego zrzutu ekranu wyraźnie widać, że zarówno początkowe, jak i końcowe spacje zostały usunięte i pozostały tylko spacje między ciągami.
Zastąp wiele spacji pojedynczą spacją
Aby zastąpić wiele spacji pojedynczą spacją, potocz polecenie out of cat do polecenia awk w następujący sposób:
$ próbka kota.tekst | awk ' gsub(/[ ]+/," "); drukuj 'Gdzie:
- gsub jest globalną funkcją podstawienia
- [ ]+ reprezentuje co najmniej jedną spację
- „ ” reprezentuje jedną białą spację
Powyższe polecenie zastępuje wiele białych znaków ([ ]+) pojedynczym białym znakiem („”).
Możesz użyć następującego polecenia, aby sprawdzić, czy powyższe polecenie zastąpiło wiele spacji białymi znakami:
$ próbka kota.tekst | awk ' sub(/[ \t]+$/, ""); drukuj ' | | tr " " "*" | tr "\t" "&"W naszym przykładowym pliku było wiele spacji. Jak widać, w próbce wiele białych znaków.plik txt został zastąpiony pojedynczym odstępem za pomocą polecenia awk.
Aby przyciąć spacje tylko w tych wierszach, które zawierają określony znak, taki jak przecinek, dwukropek lub średnik, użyj polecenia awk z -fa separator wejściowy.
Na przykład poniżej pokazano nasz przykładowy plik, który zawiera spacje w każdym wierszu.
Aby usunąć spacje tylko z wierszy zawierających przecinek (,), polecenie wyglądałoby następująco:
$ próbka kota1.tekst | awk -F, '/,/gsub(//,""); wydrukować'Gdzie (-FA,) jest separatorem pól wejściowych.
Powyższe polecenie usunie i wyświetli tylko spacje z linii zawierających określony znak (,). Pozostałe linie pozostaną nienaruszone.
Wniosek
To wszystko, co musisz wiedzieć, aby przyciąć białe znaki w swoich danych za pomocą polecenia awk. Usunięcie spacji z Twoich danych może być wymagane z kilku różnych powodów. Bez względu na przyczynę, możesz łatwo usunąć wszystkie spacje w swoich danych za pomocą poleceń opisanych w tym artykule. Za pomocą polecenia awk można nawet przycinać początkowe lub końcowe białe znaki, przycinać zarówno początkowe, jak i końcowe spacje oraz zastępować wiele spacji pojedynczą spacją.