Oto przykład użycia cut
dzielenia 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 cut
dzielenia 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
-d
argument).
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
cut
Windows nie przestrzegaliby pełnego standardu.
cut
dla 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, tr
aby 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