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

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

Ответ 1

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

Ответ 2

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

print $1 → Распечатывает первый столбец поставляемой строки. 12/12/2013

print $2 → Печатает второй столбец поставляемой строки. 14:32

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

Ответ 3

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

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

$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013