用Ruby解析系统函数
我正在我的系统函数中执行用Ruby解析系统函数,ruby,Ruby,我正在我的系统函数中执行pdfinfo,我只想获得页面大小612x1008,但我不确定如何解析它 我的代码 output = system("pdfinfo example.docx_ms.pdf") print "#{output} \n" x = "612x1008" puts x if x == output puts "yes" else puts "no" end 输出 612 x 1008 true 使用提供的答案,您可以这样做 output=`pdfinfo examp
pdfinfo
,我只想获得页面大小612x1008
,但我不确定如何解析它
我的代码
output = system("pdfinfo example.docx_ms.pdf")
print "#{output} \n"
x = "612x1008"
puts x
if x == output
puts "yes"
else
puts "no"
end
输出
612 x 1008
true
使用提供的答案,您可以这样做
output=`pdfinfo example.docx_ms.pdf | grep'页面大小:''awk'{print$3$4$5}'`.chomp
打印“#{output}\n”
它的作用是
pdfinfo
页面大小
awk
过滤页面大小维度output = `pdfinfo example.docx_ms.pdf | grep 'Page size:'`
puts output.gsub(/Page size:\s*\b/, '').chomp
我会避免外部依赖,而是使用Ruby PDF库,就像这样。太棒了,谢谢!我的输出是
612x1008 true
我添加了一个if语句来比较输出,它返回为false
我在question@tintin除非从pdfinfo结果中提取Page size
维度,否则if语句将不起作用。现在您正在将X变量与pdfinfo结果进行比较。我如何才能做到这一点?我们不是已经得到尺寸了吗?这会打印输出,但不会捕获它。你需要这样做。使用grep
和awk
也是一种倒退,因为Ruby可以在内部完成所有这一切。如果输出需要解析readlines.grep
是一个好的开始。我得到了一个未定义的方法'gsub',用于true:TrueClass(NoMethodError)
您使用的是反勾还是系统?我最初犯了一个复制粘贴错误并使用了system(返回true/false)。这是可行的,但您能解释一下页面大小:\s*\b/
的作用吗?gsub用第二个参数替换了该模式<代码>\s*匹配0个或多个空格\b
匹配一个单词boundry,我想当我想到它时,它实际上有点多余。
irb(main):001:0> `pdfinfo example.docx_ms.pdf | grep 'Page size:'`.gsub(/Page size:\s*\b/, '').chomp
=> "595 x 842 pts (A4)"