Дата и время в Linux bash [закрыто]

26

Я пытаюсь отобразить дату и время в виде

08.07.2013 16:52:13

используя команду в скрипте bash:

dt=`date '+%d/%m/%Y_%H:%M:%S'`

какая переменная используется для заполнения файла CSV.

Единственный допустимый символ - «_» (подчеркивание) или «-» между датой и временем, вывод

07/08 / 2013_16: 52: 13

Как я могу получить пробел между датой и временем? Я попробовал почти (я надеюсь) все.

Генри
источник
5
« » И «-» - единственные символы, принятые _who ? Что мешает вам заменить «_» на «» в dateстроке формата?
manatwork
Ничто не мешает включить "" в команду, они просто не появляются в выводе. Попробуйте date + "% b% e", и вы получите "4 сентября" (один пробел) на сегодня, а не желаемый 2. Я использую его в сценарии, и мое решение состоит в том, чтобы выполнить операцию в 3 этапа (я на самом деле объединить их в одну строку кода, но вы поняли идею).
Jim2B
При всем уважении, как этот вопрос получил 20 голосов? И как он попал в очередь на открытие?
G-Man говорит «Восстановить Монику»

Ответы:

49
#!/bin/bash

dt=$(date '+%d/%m/%Y %H:%M:%S');
echo "$dt"

Угадай, проблема в том, чтобы "повторить" CSV.

user1293137
источник
3
если вам нужны миллисекунды, используйте date '+%F %T.%3N'. если вам нужны микросекунды, используйте date '+%F %T.%6N'. если вам нужны наносекунды, используйте date '+%F %T.%N'. %Fдля даты, это дает YYYY-MM-DD, вы можете использовать %Dвместо того, чтобы получить MM-DD-YYYY, %Tдля времени HH:MM:SS,.
вычислительная
4

Это работает:

#!/bin/bash
dt=`date '+%d/%m/%Y %H:%M:%S'`
echo "$dt"

Также возможно использовать $(и )вместо `и`.

Александр
источник
Я забыл упомянуть, что это неправильно после применения awk / home / pi / SB_tool / sunnybeamtool / bin / sunnybeamtool -l | awk -v tot = $ tot -v dt = $ dt -v day = $ day -v mth = $ mth 'следующая ошибка 08.08.2013 23:03:03 awk: строка 1: синтаксическая ошибка в или около:
Генри
Решается назначением 2 отдельных значений dt и tm. awk не принимает 1 переменную с 2 значениями, разделенными пробелом
Henry