如何在ruby脚本中运行sed命令

时间:2018-03-15 10:56:35

标签: ruby

有一个文件,我想在文件顶部添加前缀。 文件名是xyz.csv

我能够在终端中运行相同的命令并获得结果但是当运行ruby脚本时我收到错误

xyz.rb

#Script
file = "/home/sumeet/xyz.csv"
command = "sed -i '1s/^/resource_id,code,value,date\n/'"
full = "#{command} #{file}"
`full`

错误 $ ruby xyz.rb

xyz.rb:4:in ``': No such file or directory - full (Errno::ENOENT)
    from xyz.rb:4:in `<main>'

该文件存在于系统

1 个答案:

答案 0 :(得分:1)

如果要在系统调用中使用变量,则需要使用字符串插值。尝试:

#Script
file = "/home/sumeet/xyz.csv"
command = "sed -i '1s/^/resource_id,code,value,date\\n/'"
full = "#{command} #{file}"
`#{full}`

编辑:请记得使用\\n中转义\\n。否则,它将被解释为换行符并将sed命令提前终止。