2015-03-24 1 views
0

У меня один большой файл содержит более 200000 номеров, не заказывающих Я бы хотел добавить каталог url 1/2 /, чтобы мои ссылки зависели от первых двух чисел, например мой файл: all.mp3найти и заменить URL-адрес пути с помощью чисел sed или awk

19471.mp3 
19472.mp3 
28463.mp3 
28464.mp3 
35437.mp3 
35435.mp3 

ожидается выглядеть следующим образом

http://www.example.com/files/1/9/19471.mp3 
http://www.example.com/files/1/9/19472.mp3 
http://www.example.com/files/2/8/28463.mp3 
http://www.example.com/files/2/8/28464.mp3 
http://www.example.com/files/3/5/35437.mp3 
http://www.example.com/files/3/5/35435.mp3 

ответ

3

Вы можете использовать СЭД, чтобы сделать это:

$ sed -r 's~(.)(.)~http://www.example.com/files/\1/\2/&~' file 
http://www.example.com/files/1/9/19471.mp3 
http://www.example.com/files/1/9/19472.mp3 
http://www.example.com/files/2/8/28463.mp3 
http://www.example.com/files/2/8/28464.mp3 
http://www.example.com/files/3/5/35437.mp3 
http://www.example.com/files/3/5/35435.mp3 

Захватите первые два символа и используйте их в заменяющей строке (\1 и \2). & относится ко всему матчу.

Вы можете сделать матч немного более строгим, используя [0-9], а не . внутри групп захвата, если это необходимо. Если ваша версия sed не поддерживает расширенные регулярные выражения (переключатель), вам необходимо избежать круглых скобок:

$ sed 's~\(.\)\(.\)~http://www.example.com/files/\1/\2/&~' file 
Смежные вопросы