2016-05-02 61 views
1

鉴于我们有两个彼此不相关的格式化字符串。 #test.rb STRING_1 = “标题\ nfoo栏\ nbaz \ nfoo酒吧巴兹嘘” STRING_2 = “不相关的标题\ ndog猫农场\ nspace月亮”显示唯一外壳列

如何使用红宝石或致电shell命令有这些字符串中的每一个都显示为终端中的列?关键是每个字符串的数据不会构建相关的行,即,这不是一个表,而是两个并排列表。

Title   Unrelated Title 
foo bar   dog cat farm 
baz    space moon 
foo bar baz boo 

回答

4

您可以尝试一起使用粘贴和列命令。请注意,这是一个shell命令,因此应该纠正赋值运算符之间的空格。

$ string_1="Title\nfoo bar\nbaz\nfoo bar baz boo" 
$ string_2="Unrelated Title\ndog cat farm\nspace moon" 
$ paste -d '|' <(echo -e "$string_1") <(echo -e "$string_2") | column -s'|' -t 
Title   Unrelated Title 
foo bar   dog cat farm 
baz    space moon 
foo bar baz boo 

我们粘贴与|作为分隔符的线条,并告诉列命令使用|作为参考,以形成列。

+1

'paste'确实.. – heemayl

+0

如果string_1和string_2位于test.rb内,你会怎么做? – omgmakeme

+0

我会用红宝石去。这只是一个演示使用shell命令的意思。我没有看到在Ruby中使用它们的任何一点。 –

2

在Ruby中,你可以这样来做:

#!/usr/bin/env ruby 

string_1 = "Title\nfoo bar\nbaz\nfoo bar baz boo" 
string_2 = "Unrelated Title\ndog cat farm\nspace moon" 

a1 = string_1.split("\n") 
a2 = string_2.split("\n") 

a1.zip(a2).each { |pair| puts "%-20s%s" % [pair.first, pair.last] } 
# or 
# a1.zip(a2).each { |left, right| puts "%-20s%s" % [left, right] } 

这将产生:

Title    Unrelated Title 
foo bar    dog cat farm 
baz     space moon 
foo bar baz boo 
0

嗨,如果你使用的临时文件

string_1 = "Title\nfoo bar\nbaz\nfoo bar baz boo" 
string_2 = "Unrelated Title\ndog cat farm\nspace moon" 
echo -e $string_1 >a.txt 
echo -e $string_2 >b.txt 
paste a.txt b.txt 

我希望这将有助于。