2015-07-26 2 views
0

Это что-то простое, что почему-то ускользает от меня. Я должен подумать, что я должен сделать это из подсказки bash с помощью очень простого сценария или однострочного.Вставка текста вокруг списка вещей

У меня есть файл, состоящий из списка номеров:

12345 
23456 
34567 
45678 

Очень просто. Я хочу, чтобы изменить его на:

arglebargle-12345-fulferol-12345-applesauce 
arglebargle-23456-fulferol-23456-applesauce 
arglebargle-34567-fulferol-34567-applesauce 
arglebargle-45678-fulferol-45678-applesauce 

Итак ... вставить строку с обеих сторон ряда (или строки, это просто случается, что эти строки являются числами, это не важно, чтобы они были числами) ... затем добавьте исходную строку и поместите после нее третью строку.

Я думаю, что я бы предпочел сделать это в sed или awk как однострочный. Или как рубиновый скрипт. Это должно быть так просто, и это почему-то уклоняется от моего ума!

ответ

1

Что-то вроде этого?

nums = %w(12345 23456 34567 45678) 
nums.each { |num| puts "arglebargle-#{num}-fulferol-#{num}-applesauce" } 

Выход:

arglebargle-12345-fulferol-12345-applesauce 
arglebargle-23456-fulferol-23456-applesauce 
arglebargle-34567-fulferol-34567-applesauce 
arglebargle-45678-fulferol-45678-applesauce 
2

Использование sed

echo "12345 
> 23456 
> 34567 
> 45678" | sed -e 's/\(.*\)/arglebargle-\1-fulferol-\1-applesauce/g' 

arglebargle-12345-fulferol-12345-applesauce 
arglebargle-23456-fulferol-23456-applesauce 
arglebargle-34567-fulferol-34567-applesauce 
arglebargle-45678-fulferol-45678-applesauce 

Если вы хотите заменить на место в файле (где ваш файл a.txt, например), вы можете сделать

sed -i 's/\(.*\)/arglebargle-\1-fulferol-\1-applesauce/g' a.txt 
Смежные вопросы