I have a date as 12/12/2013 14:32
I want to convert it into only 12/12/2013
.
The string can be 1/1/2013 12:32
or 1/10/2013 23:41
I need only the date part.
Asked
Active
Viewed 8.4k times
41

Chris Seymour
- 83,387
- 30
- 160
- 202

user2099444
- 421
- 1
- 4
- 3
3 Answers
73
You can do this easily with a variety of Unix tools:
$ 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
- 83,387
- 30
- 160
- 202
-
`$ python -c "import sys; print(sys.argv[1].split()[0])" "12/12/2013 14:32"` – CivFan May 12 '20 at 20:15
-
Or to follow the same mold: `$ python -c "import sys; print(sys.stdin.read().split()[0])" <<< "12/12/2013 14:32"` – CivFan May 12 '20 at 20:17
19
$ echo "12/12/2013 14:32" | awk '{print $1}'
12/12/2013
print $1
--> Prints first column of the supplied string. 12/12/2013
print $2
--> Prints second column of the supplied string. 14:32
By default, awk treats the space character as the delimiter.

devnull
- 118,548
- 33
- 236
- 227

Suresh Anbarasan
- 943
- 1
- 8
- 20
5
If your date string is stored in a variable, then you don't need to run an external program like cut
, awk
or sed
, because modern shells like bash
can perform string manipulation directly which is more efficient.
For example, in bash:
$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013

dogbane
- 266,786
- 75
- 396
- 414