10 praktycznych przykładów poleceń cięcia w Linuksie do wybierania kolumn plików
Polecenie cut w Linuksie jest używane do przetwarzania tekstu. Możesz użyć tego polecenia, aby wyodrębnić część tekstu z pliku, wybierając kolumny.
Ten samouczek zawiera kilka praktycznych przykładów polecenia wycinania, których możesz używać w codziennych czynnościach wykonywanych z wiersza poleceń.
W większości przykładu będziemy używać następującego pliku testowego.
$ cat test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
Wybierz kolumnę znaków
Aby wyodrębnić tylko żądaną kolumnę z pliku, użyj opcji -c. Poniższy przykład wyświetla drugi znak z każdej linii pliku test.txt
$ cut -c2 test.txtaps
Jak widać powyżej, znaki a, p, s są drugim znakiem z każdy wiersz pliku test.txt.
Wybierz kolumnę znaków za pomocą zakresu
Zakres znaków można również wyodrębnić z pliku, określając pozycję początkową i końcową rozdzielone znakami -. Poniższy przykład wyodrębnia pierwsze 3 znaki każdego wiersza z pliku o nazwie test.txt
$ cut -c1-3 test.txtcatcpls
Wybierz kolumnę znaków, używając pozycji początkowej lub końcowej
Do polecenia cut można przekazać pozycję początkową lub końcową z opcją -c.
Poniżej podano tylko pozycję początkową przed „-”. W tym przykładzie wyodrębniamy od trzeciego znaku do końca każdego wiersza z pliku test.txt.
$ cut -c3- test.txtt command for file oriented operations. command for copy files or directories. command to list out files and directories with its attributes.
Poniżej podano tylko pozycję końcową po znaku „-”. Ten przykład wyodrębnia 8 znaków z początku każdego wiersza z pliku test.txt.
$ cut -c-8 test.txtcat commcp commals comma
Cała linia zostanie wydrukowana, jeśli nie określisz liczby przed lub po znaku „-”, jak pokazano poniżej.
$ cut -c- test.txtcat command for file oriented operations.cp command for copy files or directories.ls command to list out files and directories with its attributes.
Wybierz określone pole z pliku
Zamiast wybierać x liczbę znaków, jeśli chcesz wyodrębnić całe pole, możesz połączyć opcję -f i -d. Opcja -f określa, które pole chcesz wyodrębnić, a opcja -d określa, jaki jest ogranicznik pól używany w pliku wejściowym.
Poniższy przykład wyświetla tylko pierwsze pole każdego wiersza z / etc / passwd, używając separatora pól: (dwukropek). W tym przypadku pierwsze pole to nazwa użytkownika. Plik
$ cut -d":" -f1 /etc/passwdrootdaemonbinsyssyncgamesbala
Wybierz wiele pól z pliku
Możesz także wyodrębnić więcej niż jedno pole z pliku lub standardowego wyjścia. Poniższy przykład wyświetla nazwę użytkownika i katalog domowy użytkowników, którzy mają powłokę logowania jako „/ bin / bash”.
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1,6root:/rootbala:/home/bala
Aby wyświetlić zakres pól, określ pole początkowe i końcowe pole, jak pokazano poniżej. W tym przykładzie wybieramy pola od 1 do 4, 6 i 7
$ grep "/bin/bash" /etc/passwd | cut -d":" -f1-4,6,7root:x:0:0:/root:/bin/bashbala:x:1000:1000:/home/bala:/bin/bash
Wybierz pola tylko wtedy, gdy wiersz zawiera separator
W naszym przykładzie / etc / passwd, jeśli podasz inny ogranicznik inny niż: (dwukropek), polecenie cut wyświetli po prostu całą linię.
W poniższym przykładzie my ' został określony separator jako | (potok), a polecenie wytnij po prostu wyświetla całą linię, nawet jeśli nie znalazło żadnej linii, która ma | (kreska) jako separator.
$ grep "/bin/bash" /etc/passwd | cut -d"|" -f1root:x:0:0:root:/root:/bin/bashbala:x:1000:1000:bala,,,:/home/bala:/bin/bash
Ale możliwe jest filtrowanie i wyświetlanie tylko wierszy zawierających określony separator przy użyciu opcji -s.
Poniższy przykład nie wyświetla żadnych danych wyjściowych, ponieważ polecenie cut nie nie znajduję żadnych wierszy, które mają separator | (potok) w pliku / etc / passwd.
$ grep "/bin/bash" /etc/passwd | cut -d"|" -s -f1
Zaznacz wszystkie pola z wyjątkiem określonych pól
Aby uzupełnić listę pól wyboru, użyj opcji –complement.
Poniższy przykład wyświetla wszystkie pola z pliku / etc / passwd z wyjątkiem pola 7
$ grep "/bin/bash" /etc/passwd | cut -d":" --complement -s -f7root:x:0:0:root:/rootbala:x:1000:1000:bala,,,:/home/bala
Zmień ogranicznik wyjścia dla wyświetlacza
Domyślnie separator wyjścia jest taki sam jako separator wejścia, który określamy w opcji cut -d.
Aby zmienić separator wyjścia, użyj opcji –output-delimiter, jak pokazano poniżej. W tym przykładzie separatorem danych wejściowych jest: (dwukropek), ale separatorem danych wyjściowych jest # (krzyżyk).
$ grep "/bin/bash" /etc/passwd | cut -d":" -s -f1,6,7 --output-delimiter="#"root#/root#/bin/bashbala#/home/bala#/bin/bash
Zmień ogranicznik wyjścia na znak nowej linii
W tym przykładzie każde pole wyniku polecenia cut jest wyświetlane w osobnym wierszu. Nadal używaliśmy –output-delimiter, ale wartość to $ '\ n', co oznacza, że powinniśmy dodać znak nowej linii jako separator wyjścia.
$ grep bala /etc/passwd | cut -d":" -f1,6,7 --output-delimiter=$"\n"bala/home/bala/bin/bash
Połącz Wytnij z innymi poleceniami uniksowymi
Potęgę polecenia cut można zrealizować, gdy połączysz je ze standardowym wyjściem jakiegoś innego polecenia Unix.
Gdy opanujesz podstawowe użycie polecenia cut które wyjaśniliśmy powyżej, możesz mądrze użyć polecenia cut, aby rozwiązać wiele wymagań dotyczących manipulacji tekstem.
Poniższy przykład pokazuje, jak możesz wydobyć tylko przydatne informacje z wyniku polecenia ps. Pokazaliśmy również, jak przefiltrowaliśmy wynik polecenia ps za pomocą grep i sed, zanim ostateczne wyjście zostało przekazane poleceniu cut.Tutaj użyliśmy opcji cut -d i -f, które wyjaśniliśmy w powyższych przykładach.
Jeśli podobał Ci się ten artykuł, możesz również polubić …
|
|