Можно ли выполнить следующее?
grep -Ff FILE_A FILE_B > FILE_C
Теперь можно запустить скрипт на файлах A и C только.
Обновление: Ожидать... Это сохраняет порядок?
Другое обновление: еще Некоторая обработка необходима для хранения порядка. Это дает мне те же результаты как Ваш исходный сценарий. Протестированный на 300K строках в FILE_A и только 300K строки в FILE_B, 125 минут по сравнению с 14 secs.
#! /bin/bash
grep -Ff FILE_A FILE_B > FILE_B_TMP
grep -oFf FILE_A FILE_B_TMP > FILE_A_SHUFF
grep -Ff FILE_A_SHUFF FILE_A > FILE_A_TMP
while read -r line; do
grep -F -m1 "$line" FILE_B_TMP
done < FILE_A_TMP > result.txt
Необходимо добавить строку хижины в начале сценария.
#!/bin/csh
Так, чтобы это было выполнено с /bin/csh
а не с /bin/sh
.
Ошибка похожа на Ваш сценарий, выполняется с sh
.
csh
не использует стандартный синтаксис оболочки.
– David Baggerman
08.07.2013, 11:33
#!/bin/csh -f
вызвать c-оболочку.
– TaXXoR
08.07.2013, 11:46