Как вставить штрих в строку с помощью sed (например, 201107
to 2011-07
)?
Вставьте символ в определенное место, используя sed
Ответ 1
echo "201107" | sed 's/201107/2011-07/'
Должен работать. Но просто шучу, вот более общее решение:
echo "201107" | sed 's/^\(.\{4\}\)/\1-/'
Вставьте -
после первых четырех символов.
НТН
Ответ 2
Для неопределенной версии sed (по крайней мере, моего GNU sed 4.2.2) вы можете просто:
echo "201107" | sed 's/./&-/4'
/4
→ заменить для 4-го вхождения (шаблона поиска .
)
&
→ обратная ссылка на весь матч
Я узнал об этом из другого сообщения: https://unix.stackexchange.com/questions/259718/sed-insert-character-at-specific-positions
Ответ 3
Следующее будет соответствовать замене только на строки из четырех цифр, за которыми следуют строки из двух цифр.
$ echo '201107' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)/\1-\2/'
2011-07
Регулярное выражение Sed немного неудобно из-за отсутствия \d
и необходимости избегать скобок и фигурных скобок (но не браслетов). Мое решение должно быть 's/(\d{4})(\d{2})/\1-\2/'
если не для этих особенностей.
Ответ 4
Я знаю, что это раскапывает массивный динозавр, но если вы хотите устранить 6 хвостов хвоста
echo '20110715000000' | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{6\}\)/\1-\2-\3/'