Привет, у меня есть следующий файл:
P:TWS.XAUUSD 07:34:47.872000 0 1306.73 1000 1306.87 500 0 0 99
P:TWS.XAUUSD 07:34:47.876000 0 1306.7 500 1306.87 500 0 0 99
P:TWS.XAUUSD 07:34:47.877000 0 1306.7 500 1306.85 500 0 0 99
Я хочу изменить метку времени во втором столбце (2 доллара США) и уменьшить ее на 1 час.
Я использую awk и разделяю второе поле на 2 отдельные подстроки, но когда я использую следующий код:
awk '{print $1,substr($2,1,2)-1 substr($2,3,13),$3,$4,$5,$6,$7,$8,$9,$10}'
Мой вывод выглядит так
P:TWS.XAUUSD 6:34:47.872000 0 1306.73 1000 1306.87 500 0 0 99
P:TWS.XAUUSD 6:34:47.876000 0 1306.7 500 1306.87 500 0 0 99
P:TWS.XAUUSD 6:34:47.877000 0 1306.7 500 1306.85 500 0 0 99
Расчет и информация верны, но я теряю форматирование (мне нужно, чтобы столбец часов HH был двухзначным).
Как я могу выполнить тот же расчет и сохранить исходное форматирование.
Я попытался использовать команду printf, но мне не удалось извлечь несколько полей и получить всю строку, которая мне нужна.
awk '{printf ("% 02d \ n"), $ 2-1}'
дает мне следующий результат
06
06
06
Как мне соединить print и printf?
print
теряет форматирование между столбцами или интервалы (только$0
сохраняет их). Вы должны будете сгенерировать одну строку формата дляprintf
с 11 соответствующими спецификациями преобразования, по одной для каждого из ваших полей вывода. - person Jonathan Leffler   schedule 13.06.20140:20:40
и ваш скрипт сокращает время на один час, должно ли оно стать _2 _ ??? - person Jotne   schedule 13.06.2014OFS="\t"
). - person Ed Morton   schedule 14.06.2014