Додавання тегів формату trec до тисяч файлів


0

Мені потрібно додати теги, такі як текст файлу в тисячах файлів у каталозі, і я спробував використати cat і вивів його до потоку файлу, використовуючи

for file in *
do
    cat ../gau > temp;  //gau contain format i need to append in each file
    echo $file >>temp;
    cat ../gau_ >>temp ;//contains </DOCID>
    cat $file >>temp;  
    cat ../gau1  >> temp;  //this contain last sentence </DOC>
    cat temp > $file
done

але робити це дуже повільно. Може хто-небудь, будь ласка, скажіть мені кращий і ефективний спосіб зробити це? Чи можна робити за допомогою C? Як ми можемо відкривати файли в партіях, а потім обробляти їх і повертати, оскільки це може прискорити цей процес, оскільки відкриття і написання файлу є шийкою пляшки.

Чи існує та передбачена програма (яка є ефективною та швидкою) для виконання цієї роботи, оскільки ми не вистачає часу.


Будь ласка, ні перехрестя . Крім того, ви повинні попросити модератора зв'язати ваші облікові записи, якщо ви не можете зробити це самостійно.
Dennis Williamson

Відповіді:


1

Ви можете побачити багато поліпшень, лише зателефонувавши cat один раз за файл:

for file in *
do
    echo "$file" | cat ../gau - ../gau_ "$file" ../gau1 > temp && mv "$file"
done

Тире в аргументах cat вибирає ім'я файлу з конвеєра. Всі аргументи об'єднані разом у вихідний файл.


0

Деякі оптимізації до існуючого методу:

Деякі з них cat операції можна замінити echo:

echo "</DOCID>" >> temp

Це буде додано </DOCID> до тимчасового файлу без необхідності спочатку прочитати його з файлу. Те ж саме можна зробити для будь-якої кішки з файлів gau *, якщо вміст не надто довгий.

Перейменуйте тимчасовий файл замість того, щоб вносити дані до початкового файлу:

mv temp $file

Це майже миттєва операція і не передбачає читання всіх даних, а потім написання її знову.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.