У меня есть очень большие текстовые файлы (~ 50 000), над которыми мне нужно выполнить некоторую обработку текста. В основном запускайте несколько команд grep. Когда я запускаю его вручную, он возвращается в одно мгновение, но когда я делаю то же самое в скрипте bash - это занимает много времени. Что я делаю неправильно в нижеприведенном сценарии bash. Я передаю имена файлов в качестве аргументов командной строки скрипту
Пример входных данных:
BUSINESS^GFR^GNevil
PERSONAL^GUK^GSheila
Вывод, который должен появиться в файле - BUSINESS^GFR^GNevil
Через некоторое время он начинает распечатывать весь файл на терминале. Как мне подавить то же самое?
#!/bin/bash
cat $2 | grep BUSINESS
cat
? Почему бы не простоgrep
напрямую? - person Daniel   schedule 26.12.2014$($(cat $2)
также, чтобы найти файл, используйте неcat f | grep 'something'
, аgrep 'something' f
- person fredtantini   schedule 26.12.2014cat
здесь - просто укажите файл в вызове grep. - person Dason   schedule 26.12.2014UUOC
, это тоже неправильно.cat $2 | grep ...
мог по крайней мере дать вам правильные результаты.$(cat $2) | grep BUSINESS
совершенно неправильно. По сути, содержимое$2
будет запускаться как команда... - person anishsane   schedule 26.12.2014cat file | command
отличается от$(cat file) | command
. например Создайте файл, содержащий только одну строку:ls
и проверьте выводcat file | grep .
против$(cat file) | grep .
... - person anishsane   schedule 26.12.2014