для, например:
N = $ (echo $ ((((случайные% 6) +1))
. Я должен получить эту переменную в/ etc / etc / et passwd
.
Итак, вы пытаетесь распечатать все линии / etc / passwd
, которые содержат случайное число от одного до шести?
не будет ли это просто (если предполагает Bash
или ZSH [115299] ZSH
или ksh
для $ случайных
, которые базовый posx Shell не Поддержка):
grep $((RANDOM%6+1)) /etc/passwd
Если вам нужно это случайное число в другом месте:
n=$((RANDOM%6+1))
grep $n /etc/passwd
Я не думаю, что это то, что вы пытаетесь сделать, но вы упростили свой вопрос и потеряли этот намек.
Один из способов решения этой проблемы:
Для каждой строки во входном файле после заголовка:
Вот пример кода, который будет соответствовать первым двум полям:
#!/usr/bin/perl
use strict;
use warnings;
my %filehandles=();
my $filenum=1;
open INPUT, "fruit.csv"
or die "Cannot open input file.";
my $header = <INPUT>;
while ( <INPUT> )
{ # Remove spaces from input
$_ =~ s/ //g;
my @fields = split ',', $_;
if ( ! $filehandles{$fields[0]}{$fields[1]} )
{ open $filehandles{$fields[0]}{$fields[1]} , ">file$filenum"
or die "Cannot open output file file$filenum.";
print {$filehandles{$fields[0]}{$fields[1]}} $header;
$filenum++;
}
print {$filehandles{$fields[0]}{$fields[1]}} $_;
}