在一系列事物周围插入文字

时间:2015-07-26 15:11:01

标签: ruby awk sed

这很简单,出于某种原因让我望而却步。我认为我应该能够通过一个非常简单的脚本或单行程序从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作为单行代码。或者作为红宝石脚本。它应该是如此简单,并且出于某种原因它正在回避我的想法!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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 :(得分:1)

这应该完成这项工作:

awk '{ print "arglebargle-" $0 "-fulferol-" $0 "-applesauce" }' numFile

this related question