Как определить разделитель «tab» с «cut» в BASH?

Вот пример использования cut для разбиения ввода на поля с использованием разделителя пробелов и получения второго поля:

cut -f2 -d' '

Как разделитель можно определить как вкладку, а не пробел?

162 голоса | спросил Muhammad Hasan Khan 30 MaramFri, 30 Mar 2012 11:38:16 +04002012-03-30T11:38:16+04:0011 2012, 11:38:16

4 ответа


228

Два способа:

Нажмите Ctrl-v + Tab

cut -f2 -d'   ' infile

или напишите его следующим образом:

cut -f2 -d$'\t' infile
ответил Birei 30 MaramFri, 30 Mar 2012 11:42:36 +04002012-03-30T11:42:36+04:0011 2012, 11:42:36
160

Вкладка по умолчанию.

См. вырезать справочную страницу .

-d delim
         Use delim as the field delimiter character instead of the tab
         character.

Итак, вы должны просто написать

cut -f 2
ответил Mikel 30 MarpmFri, 30 Mar 2012 17:56:57 +04002012-03-30T17:56:57+04:0005 2012, 17:56:57
9

awk '{ print $2; }' inputfile

ответил ipip 30 MarpmFri, 30 Mar 2012 15:29:06 +04002012-03-30T15:29:06+04:0003 2012, 15:29:06
7

В общем, без каких-либо невидимых символов: используйте tr, чтобы преобразовать разделители в формат, который может быть проще задан для cut.

$ echo -e "a\tb\tc" |tr '\t' ' ' |cut -d' ' -f2
b

tr - простой, но мощный инструмент для сопоставления и замены символов.

ответил nobar 21 52014vEurope/Moscow11bEurope/MoscowFri, 21 Nov 2014 23:34:39 +0300 2014, 23:34:39

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132