file1、file2など、いくつかのファイルがあります。各ファイルには1行に1単語があります。たとえば、次のようになります。
file1 file2 file3
one four six
two five
three
私が望むのは、すべての可能な順列(繰り返しなし)で新しいファイル4にペアで結合することです。良い
onetwo
onethree
onefour
onefive
...
twothree
...
onefour
...
fourone
...
Linuxコマンドを使用してこれはどのように可能ですか?
ベストアンサー1
Rubyはこの種の仕事に適した簡潔な言語です。
ruby -e '
words = ARGV.collect {|fname| File.readlines(fname)}.flatten.map(&:chomp)
words.combination(2).each {|pair| puts pair.join("")}
' file[123] > file4
onetwo
onethree
onefour
onefive
onesix
twothree
twofour
twofive
twosix
threefour
threefive
threesix
fourfive
foursix
fivesix
そうですね。combination
"onetwo"が提供されましたが、"twoone"がありません。良いものがあります。permutation
ruby -e '
words = ARGV.collect {|fname| File.readlines(fname)}.flatten.map(&:chomp)
words.permutation(2).each {|pair| puts pair.join("")}
' file{1,2,3}
onetwo
onethree
onefour
onefive
onesix
twoone
twothree
twofour
twofive
twosix
threeone
threetwo
threefour
threefive
threesix
fourone
fourtwo
fourthree
fourfive
foursix
fiveone
fivetwo
fivethree
fivefour
fivesix
sixone
sixtwo
sixthree
sixfour
sixfive