Используя SED, я хотел бы преобразовать несколько сотен строк в текстовом файле из:
Пример ввода:
https://mysite.demo.com/topics/en-gb/3 https://mysite.demo.com/topics/en-gb/436 https://mysite.demo.com/topics/en-gb/9167
в
Вывод:
https://mysite.demo.com/topics/en-gb/3/pdf/3.pdf https://mysite.demo.com/topics/en-gb/436/pdf/436.pdf https://mysite.demo.com/topics/en-gb/9167/pdf/9167.pdf
Мне было интересно, какую команду SED я бы использовал для этого?
Большое спасибо
В соответствии с вашими примерами ввода и ожидаемого вывода, эта команда sed будет работать:
sed
sed -E 's,(.*\/)([0-9]+$),\1\2\/pdf\/\2\.pdf,g' text_file
Прогон: echo "https://mysite.demo.com/topics/en-gb/3" |\ sed "s|\(https:\/\/mysite.demo.com\/topics\/en-gb\)\/\([0-9]\+\)|\1/\2/pdf/\2.pdf|g"
echo "https://mysite.demo.com/topics/en-gb/3" |\ sed "s|\(https:\/\/mysite.demo.com\/topics\/en-gb\)\/\([0-9]\+\)|\1/\2/pdf/\2.pdf|g"
Выход : https://mysite.demo.com/topics/en-gb/3/pdf/3.pdf
https://mysite.demo.com/topics/en-gb/3/pdf/3.pdf
Здесь я использую sed "s|||" вместо sed "s///".
sed "s|||"
sed "s///"