Вопрос:

Печать только первого поля в строке

unix sed awk field cut

65236 просмотра

3 ответа

161 Репутация автора

У меня есть свидание, так как 12/12/2013 14:32я хочу преобразовать его только в 12/12/2013. Строка может быть 1/1/2013 12:32или 1/10/2013 23:41мне нужна только часть даты.

Автор: user2099444 Источник Размещён: 22.02.2013 12:44

Ответы (3)


58 плюса

66914 Репутация автора

Вы можете сделать это легко с помощью различных инструментов Unix:

$ cut -d' ' -f1  <<< "12/12/2013 14:32"
12/12/2013

$ awk '{print $1}' <<< "12/12/2013 14:32"
12/12/2013

$ sed 's/ .*//' <<< "12/12/2013 14:32"
12/12/2013

$ grep -o "^\S\+"  <<< "12/12/2013 14:32"
12/12/2013

$ perl -lane 'print $F[0]' <<< "12/12/2013 14:32"
12/12/2013
Автор: Chris Seymour Размещён: 22.02.2013 12:48

3 плюса

204559 Репутация автора

Если ваша строка даты хранится в переменной, вам не нужно запускать внешнюю программу, например cut, awkили sed, потому что современные оболочки вроде bashмогут выполнять манипуляции со строками напрямую, что более эффективно.

Например, в bash:

$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013
Автор: dogbane Размещён: 22.02.2013 01:28

12 плюса

599 Репутация автора

$ echo "12/12/2013 14:32" | awk '{print $1}'
12/12/2013

print $1 -> Печатает первый столбец предоставленной строки. 12/12/2013

print $2 -> Печатает второй столбец предоставленной строки. 14:32

По умолчанию awk обрабатывает символ пробела как разделитель.

Автор: Suresh Anbarasan Размещён: 22.02.2013 03:26
Вопросы из категории :
32x32