Описание тега qantas
Как уже упоминалось, губка из moreutils - это здорово. Я использую этот скрипт для эмуляции, чтобы избежать moreutils dependecy:
#!/Бен/ш-е
#Понежиться входных и тройник его аргументы
ст=0; tmpf=
tmpf="`mktemp`" && метод exec 3<>"$tmpf" || ст="$?"
РМ -Ф "$tmpf" #удалить его, даже если exec неудачу; Нооп если mktemp не удалось
[ "$ст" = 0 ] || выход "$ст"
кошка >&3
<как/dev/ФД/3 тройник "$@" >/dev/нуль
Вы можете использовать его вот так:
команда grep '^[а-Яа-З.:]' "$путь_к_файлу" \
| СЭД -Р '/^(РМ|кд)/д' \
| уник -п | губку "$путь_к_файлу"
Вы не можете сделать это с простым перенаправлением вывода, поскольку редиректы происходят перед запуском команды и перенаправление вывода обрезает выходной файл.
Другими словами, с помощью команды grep время (первые простые команды газопровода) начинается, последнее перенаправление уже усе входной/выходной файл.
Да нет стандартных утилит UNIX, что делать правда в месте редактирования, насколько я знаю. СЕПГ -я
только эмулирует его с помощью временного файла. Я думаю, причина в том, что истинный фильтрации "на месте" может быть легко поврежден файл, если шаг конвейера не получается.
Насколько то, что происходит под ними-оба |
и <()
использовать систему труб, которые принимают пройти ИО буфер за один раз. Механизм не создает временных файлов (не реальный (файловая система) да и вообще файлы), и он пытается избегать проведения входных в памяти.