#!/bin/bash
{
IFS=' '
while read a b c rest
do
for fld in $rest
do
echo -e "$a\t$b\t$c\t$fld"
done
done
}
Обратите внимание, что вы должны войти в реальную вкладку (IFS
)
Я также подумал, что должен сделать версию Perl:
#!/bin/perl -n
($a,$b,$c,@r)=(chomp and split /\t/); print "$a\t$b\t$c\t$_\n" for @r
Чтобы сделать все это изкомандная строка, чтение из in.txt и вывод в out.txt:
perl -ne '($a,$b,$c,@r)=(chomp and split /\t/); print "$a\t$b\t$c\t$_\n" for @r' in.txt > out.txt
Конечно, если вы сохраните скрипт perl (скажем, как script.pl)
perl script.pl in.txt > out.txt
Если вытакже сделайте исполняемый файл скрипта (chmod +x script.pl
):
./script.pl in.txt > out.txt
HTH