Вы просите "известные обходные решения". Вот простой:
$ date -d "$(echo 20140103T1422 | sed 's/T/ /')"
Fri Jan 3 14:22:00 PST 2014
Это использует sed
заменять "T" пространством. Результатом является формат это date
понимает.
Если мы добавляем секунды на дату ISO8601, то date
требует большего количества изменений:
$ date -d "$(echo 20140103T142211 | sed -r 's/(.*)T(..)(..)(..)/\1 \2:\3:\4/')"
Fri Jan 3 14:22:11 PST 2014
В вышеупомянутом, sed
заменяет "T" пространством и также разделяет HHMMSS на HH:MM:SS.
Единственное различие между ними - это позиция курсора. Из :help motion.txt
:
f
f{char} To [count]'th occurrence of {char} to the right. The
cursor is placed on {char} inclusive.
{char} can be entered as a digraph digraph-arg.
When 'encoding' is set to Unicode, composing
characters may be used, see utf-8-char-arg.
:lmap mappings apply to {char}. The CTRL-^ command
in Insert mode can be used to switch this on/off
i_CTRL-^.
F
F{char} To the [count]'th occurrence of {char} to the left.
The cursor is placed on {char} exclusive.
{char} can be entered like with the f command.
t
t{char} Till before [count]'th occurrence of {char} to the
right. The cursor is placed on the character left of
{char} inclusive.
{char} can be entered like with the f command.
T
T{char} Till after [count]'th occurrence of {char} to the
left. The cursor is placed on the character right of
{char} exclusive.
{char} can be entered like with the f command.
Да, основное различие между ними - это положение курсора, как вы сказали.
Это удобно, например, когда вы хотите удалить или изменить некоторые символы. Предположим, у вас есть следующая строка:
print "Hello, world!\n"; exit
Предположим, вы хотите изменить все до точки с запятой. Для этого перейдите в начало строки ( ^ ), а затем c измените все t без точки с запятой.
Если вместо этого вы хотите удалить первую команду и просто оставить exit
, вы бы d удалили все, вставив f точку с запятой.
Короче говоря, f и t - это то, что vim
называет командами движения. Они помогают модифицировать оператора перед собой. Когда вы перемещаете оператор с помощью f , он работает со всеми символами между текущей позицией курсора до , включая символ, на который вы переместились с помощью f . Если вы вместо этого выберете t , ваш оператор будет работать со всем, от текущей позиции до , исключая персонажа, на которого вы указали t .