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

unix sed awk field cut

65236 просмотра

3 ответа

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

Автор: user2099444 Источник Размещён: 13.11.2019 11:46

Ответы (3)


58 плюса

Вы можете сделать это легко с помощью различных инструментов 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

12 плюса

$ 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

3 плюса

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

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

$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013
Автор: dogbane Размещён: 22.02.2013 01:28
Вопросы из категории :
32x32