我有两个制表符分隔的文本文件,一个带有城市名称,另一个带有说明。我正在尝试从文件1中读取第1行并将其与文件2中的1-1000行组合,并一次打印一行。我想为文件1的每一行执行此操作。
示例文件1:
San Francisco
San Diego
San Mateo
示例文件2:
groovy
windy
hot
期望的输出:
San Francisco groovy
San Francisco windy
San Francisco hot
San Diego groovy
San Diego windy
San Diego hot
San Mateo groovy
San Mateo windy
San Mateo hot
我写了一些可以逐步浏览一个文件并阅读它的内容,我编写了多个带有硬编码描述的脚本,并且有一个.bat / .command文件,我可以运行它来运行30个脚本来覆盖我的参数但是我认为必须有一个更简单的方法。 我正在打开文件并立即使用while循环进行咀嚼但是这可能不是获得我想要获得的结果的最佳方法。 任何帮助将不胜感激。
我拥有的是:
open (my $fh2, "cities.txt")
or die "Could not open file";
mkdir 'Output', 0755;
while (my $row = <$fh2>){
print $row;
if ($row ne "end\n"){
chomp $row;
print "$row\n";
else {
close $fh2;
die;
}
}
我正在使用名为v1的set变量并使用:$ v1。$ row组合来打印两个变量,但每个变量需要1个脚本。
制表符分隔文本始终是我被告知用作数据源但它可以成为分隔文本文件。
答案 0 :(得分:1)
你说你的文件是以制表符分隔的,但我没有在你的示例输入中看到任何标签,所以我现在就打算用它。
use strict;
use warnings;
open(my $fh, '<', 'cities.tsv') or die $!;
chomp(my @cities = <$fh>);
close($fh);
open($fh, '<', 'adjectives.tsv') or die $!;
for my $city (@cities) {
seek($fh, 0, 0);
while (my $adjective = <$fh>) {
chomp($adjective);
print "$city $adjective\n";
}
}
close($fh);
答案 1 :(得分:1)
以下是在R中快速完成此操作的方法:
> file1 <- readLines("file1.txt")
> file2 <- readLines("file2.txt")
> writeLines(sort(as.character(outer(file1, file2, paste))))
San Diego groovy
San Diego hot
San Diego windy
San Francisco groovy
San Francisco hot
San Francisco windy
San Mateo groovy
San Mateo hot
San Mateo windy
如果要将这些内容写入文件,请使用con
中的writeLines()
参数。