這裏的一個簡單的方法使用String.%
(格式):
FORMAT = "%-9s\t%s"
TEXT_FILE_CONTENT = [
'tomcat7.0 Build-Date: 20140220-1147',
'tomcat7.1 Build-Date: 20140220-1147',
'tomcat7.2 Build-Date: 20140220-1147',
'tomcat7.3 Build-Date: 20140220-1147',
]
puts FORMAT % %w[Name Build-Date]
puts TEXT_FILE_CONTENT.map{ |l| FORMAT % /^(\S+).+?(\S+)$/.match(l).captures }
,輸出:
Name Build-Date
tomcat7.0 20140220-1147
tomcat7.1 20140220-1147
tomcat7.2 20140220-1147
tomcat7.3 20140220-1147
你可以同樣做到這一點,如:
TEXT_FILE_CONTENT.each{ |l| puts FORMAT % /^(\S+).+?(\S+)$/.match(l).captures }
%
會想到一個數組,因爲有格式兩個佔位符。下面是其中數組來自:
/^(\S+).+?(\S+)$/.match('tomcat7.3 Build-Date: 20140220-1147').captures
# => ["tomcat7.3", "20140220-1147"]
,如果你想這樣做的管子,它保存爲「s1.rb」:
TEXT_FILE_CONTENT = [
'tomcat7.0 Build-Date: 20140220-1147',
'tomcat7.1 Build-Date: 20140220-1147',
'tomcat7.2 Build-Date: 20140220-1147',
'tomcat7.3 Build-Date: 20140220-1147',
]
puts TEXT_FILE_CONTENT
並將此作爲「s2.rb」 :
FORMAT = "%-9s\t%s"
puts FORMAT % %w[Name Build-Date]
ARGF.each{ |l| puts FORMAT % /^(\S+).+?(\S+)$/.match(l).captures }
然後運行它們爲:
ruby s1.rb | ruby s2.rb
,你應該小號ee是這樣的:
Name Build-Date
tomcat7.0 20140220-1147
tomcat7.1 20140220-1147
tomcat7.2 20140220-1147
tomcat7.3 20140220-1147
對後者的好處是你正在處理只做一件事的小型專業腳本。通過管道(「|
」)組合它們是* nix建立小應用程序的大型應用程序的方式。
樂碼,請 –