Мне нужно вставить знак минуса "-" в строку ниже после 2 символов, а затем после 3 символов, например:
mystring="223334444"
и желаемый результат будет выглядеть так: 22-333-4444
Я могу вставить символы фиксированной длины, следуя приведенному ниже вопросу:
https://unix.stackexchange.com/questions/5980/how-do-i-insert-a-space-every-four-characters-in-a-long-line
, но в моем случае расщепление не является статическим (не после каждой n-й позициино после позиций x, y, z) мне нужно выражение для выполнения работы с использованием sed.
обновление Я могу получить требуемый формат с помощью нескольких команд sed, таких как: echo 111111111 | sed 's/.\{2\}/&-/' | sed 's/.\{6\}/&-/'
, но мне нужно знать, как мне этого добиться, используя одно выражение
Добавление дополнительной информации // Извините, что пропустил раньше
выходные данные 22-333-444
будут использоваться при некотором поиске (с использованием grep), и мне, возможно, придется выполнить тысячи таких преобразований, а затем выполнить поиск по выходным строкам, поэтому здесь также была бы желательна скорость / оптимизация обработки.
Добавление информации о поисковой детали в соответствии с запросом в комментариях
образец входного файла:
135311046
135310897
135311354
135310944
125312732
125222083
415211804
415222255
415204163
415206020
Я читаю этот файл построчно в некоторое времяв переменной line
я хочу преобразовать эту строку 135311046
в 13-531-1046
и затем выполнить grep для файла.
В настоящее время я использую нижеподстановка grep $(echo $line | sed 's/.\{2\}/&-/' | sed 's/.\{6\}/&-/') datafile.txt
файл данных содержит такие данные:
Line1.P2.ON28.C1.P1.FL1,12-522-2083
Line1.P1.ON19.C1.P1.FL1,12-522-2112
Line1.P1.ON34.C1.P1.FL1,12-530-2766
Line1.P2.ON15.C1.P1.FL1,12-531-1041
Line1.P2.ON15.C1.P3.FL1,12-531-1041
Line1.P2.ON15.C1.P4.FL1,12-531-1041
Line1.P1.ON39.C1.P1.FL1,12-531-1094
Line1.P2.ON26.C1.P1.FL1,12-531-2732
Line1.P1.ON57.C1.P1.FL1,12-533-4019
, поэтому мое основное требование - сделать преобразование в удобной / компактной форме, и так как это тысячи строк, мне нужнопоиск в другом файле, он должен быть быстрым / оптимизированным