Żadne z nich nie działa oczywiście w systemie Windows (np. Git Bash). Użyj tam odpowiedzi @ Mikel (domyślnym ogranicznikiem jest tab, po prostu pomiń -dargument).
Ale prawdopodobnie zawsze bezpieczniej jest wyraźnie wymienić takie flagi, zarówno dla czytelności, jak i przenośności. Mogę sobie wyobrazić, że niektórzy ludzie projektujący system cutWindows nie przestrzegaliby pełnego standardu.
Willem Van Onsem,
3
Należy zaakceptować odpowiedź: najprostszy kod, najprostsze wyjaśnienie. ya
uiled
5
Ta odpowiedź zmieniła moje życie
matheeeny
1
@WillemVanOnsem, jeśli ktoś napisze wersję 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ść”.
Wildcard
12
awk -F '\t''{ print $2 }' inputfile
Wyodrębnia to drugie rozdzielane tabulatorami pole każdego wiersza wprowadzania inputfile.
Ale co, jeśli dane wejściowe są 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.
G-Man
@ G-Man: Ogranicznik spacji był tylko przykładem. Użyj dowolnego separatora odpowiedniego dla danych - na przykład przecinka. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
nobar
... Ale tak, jeśli separator musi być tabulatorem, moje podejście nie zadziała.
Odpowiedzi:
Dwie drogi:
Naciśnij Ctrl+, Va następnie Tab.
lub napisz to w ten sposób:
źródło
-d
argument).ksh93
, niebash
. 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 .
Więc powinieneś po prostu napisać
źródło
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ść”.Wyodrębnia to drugie rozdzielane tabulatorami pole każdego wiersza wprowadzania
inputfile
.źródło
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
.tr
to proste, ale potężne narzędzie do dopasowywania i zastępowania znaków.źródło
abc(space)def(tab)ghi
? Twoja odpowiedź przyniesiedef
, ale powinna ulecghi
. Podobnie, jeśli dane wejściowe sąABC(tab)DEF(space)GHI
, twoja odpowiedź przyniesieDEF
, ale powinna ustąpićDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2