Ваш Intel Core 2 Duo CPU T7500 - это 64-разрядный процессор. Итак, если вы установили 64-битную ОС, вы можете попробовать make
target linux-x86-64
или, если 32-битная версия, попробуйте linux-x86-sse2
.
Не так умно, как awk-версия, но вот альтернатива.
497844.txt — это имя вашего файла. Я использовал номер вопроса
for f in `cut -f1 -d. 497844.txt | sort | uniq`
do
group=`grep $f.Group 497844.txt`
fn=`echo $group| cut -f2 -d" "`
grep ^$f 497844.txt > $fn
done
Объяснение.
Для каждого уникального номера группы мы получаем имя файла, которое является значением строки с группой в ней.
Затем мы извлекаем каждую строку с этим номером группы и перенаправляем вывод в полученный выше файл.
Сawk
:
$ awk -v FS="\t" '$1 ~ /Group/ { file = $2 } { print $0 > file }' input.txt
awk
проверяет, есть ли Group
в первом столбце. В этом случае мы сохраняем значение второго столбца в переменной file
.
После проверки вся строка печатается и перенаправляется >
в файл с именем, хранящимся в переменной file
.
Мы можем использовать редактор sed
и выполнить проход 2 -по входному файлу. Первый проход генерирует список команд sed, которые будут использоваться во втором проходе для создания требуемого вывода.
$ sed -ne '
s/.*[[:blank:]]//
s|.*|/&/{N;w &\n}|w sed_code
n
' input-file.txt
Тогда это второй проход. Предполагая, что создаваемые имена файлов не содержат специальных символов регулярных выражений.
$ sed -nf sed_code input-file.txt
Мы также можем использовать Perl для этой задачи:
$ perl -aMautodie -pe '
open my $fh, ">", $F[1];
$_.= <>;
select $fh;
' input.txt