Oto przykład użycia cutdzielenia danych wejściowych na pola za pomocą separatora spacji i uzyskania drugiego pola:
cut -f2 -d' '
Jak ogranicznik może być zdefiniowany jako tabulator zamiast spacji?
Oto przykład użycia cutdzielenia danych wejściowych na pola za pomocą separatora spacji i uzyskania drugiego pola:
cut -f2 -d' '
Jak ogranicznik może być zdefiniowany jako tabulator zamiast spacji?
Odpowiedzi:
Dwie drogi:
Naciśnij Ctrl+, Va następnie Tab.
cut -f2 -d' ' infile
lub napisz to w ten sposób:
cut -f2 -d$'\t' infile
-dargument).
ksh93, nie bash. Jest to obsługiwane przynajmniej przez ksh93, zsh, bash, mksh i FreeBSD sh ( może to doprowadzić do kolejnej poważnej zmiany standardowej specyfikacji POSIXsh ).
Tab jest ustawieniem domyślnym.
Zobacz stronę man cut .
-d delim
Use delim as the field delimiter character instead of the tab
character.
Więc powinieneś po prostu napisać
cut -f 2
cutWindows nie przestrzegaliby pełnego standardu.
cutdla systemu Windows i nie przestrzega jej specyfikacji POSIX , nie ma powodu zakładać, że jakikolwiek skrypt POSIX będzie działał z tym systemem. Trzymaj się funkcji określonych przez POSIX. Nie próbuj dopuszczać hipotetycznych przyszłych niezgodnych implementacji; nie to oznacza „przenośność”.
Bardziej ogólnie, nie wymagając żadnych niewidocznych znaków: Użyj, traby przekonwertować ograniczniki na format, który można łatwiej określić cut.
$ echo -e "a\tb\tc" |tr '\t' ' ' |cut -d' ' -f2
b
tr to proste, ale potężne narzędzie do dopasowywania i zastępowania znaków.
abc(space)def(tab)ghi? Twoja odpowiedź przyniesie def, ale powinna ulec ghi. Podobnie, jeśli dane wejściowe są ABC(tab)DEF(space)GHI, twoja odpowiedź przyniesie DEF, ale powinna ustąpić DEF(space)GHI.
echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2