Ни одна из них не работает в Windows (например, Git Bash), очевидно. Используйте ответ @ Mikel (разделитель по умолчанию - tab, просто опустите -dаргумент).
Но, вероятно, всегда безопаснее явно упоминать такие флаги для удобства чтения и переносимости. Я могу себе представить, что некоторые люди, разрабатывающие cutдля Windows, не будут следовать полному стандарту.
@WillemVanOnsem, если кто-то пишет версию cutдля Windows и не следует для нее спецификации POSIX , нет никаких оснований предполагать, что любой сценарий POSIX будет работать с этой системой. Придерживайтесь POSIX-указанных функций. Не пытайтесь учесть гипотетические будущие несоответствующие реализации; это не то, что означает переносимость.
Wildcard
12
awk -F '\t''{ print $2 }' inputfile
Это извлекает второе разделенное табуляцией поле каждой строки ввода из inputfile.
В более общем смысле, не требуя каких-либо невидимых символов: используйте trдля преобразования разделителей в формат, который может быть указан более легко cut.
$ echo -e "a\tb\tc"|tr '\t'' '|cut -d' '-f2
b
tr это простой, но мощный инструмент для подбора и замены символов.
Но что, если ввод abc(space)def(tab)ghi? Ваш ответ уступит def, но должен уступить ghi. Точно так же, если ввод ABC(tab)DEF(space)GHI, ваш ответ даст DEF, но он должен дать DEF(space)GHI.
G-Man
@ G-Man: разделитель пространства был только примером. Используйте любой разделитель, подходящий для ваших данных - например, запятую. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
Нобар
... Но, да, если разделитель должен быть вкладкой, то мой подход не сработает.
Ответы:
Два пути:
Нажмите Ctrl+ Vи затем Tab.
или напишите это так:
источник
-d
аргумент).ksh93
не такbash
. Это поддерживается, по крайней мере, ksh93, zsh, bash, mksh и FreeBSD sh ( это может привести к следующему серьезному изменению спецификации стандарта POSIX дляsh
).Вкладка по умолчанию.
Смотрите страницу справочника .
Так что вы должны просто написать
источник
cut
для Windows, не будут следовать полному стандарту.cut
для Windows и не следует для нее спецификации POSIX , нет никаких оснований предполагать, что любой сценарий POSIX будет работать с этой системой. Придерживайтесь POSIX-указанных функций. Не пытайтесь учесть гипотетические будущие несоответствующие реализации; это не то, что означает переносимость.Это извлекает второе разделенное табуляцией поле каждой строки ввода из
inputfile
.источник
В более общем смысле, не требуя каких-либо невидимых символов: используйте
tr
для преобразования разделителей в формат, который может быть указан более легкоcut
.tr
это простой, но мощный инструмент для подбора и замены символов.источник
abc(space)def(tab)ghi
? Ваш ответ уступитdef
, но должен уступитьghi
. Точно так же, если вводABC(tab)DEF(space)GHI
, ваш ответ дастDEF
, но он должен датьDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2