Подтвердить что ты не робот

Вставьте символ в определенное место, используя sed

Как вставить штрих в строку с помощью sed (например, 201107 to 2011-07)?

4b9b3361

Ответ 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/'