Многие ответили хорошо. Я хочу лишь дополнить эти ответы. Я думаю, что философия UNIX состоит в том, что инструмент должен делать одно и делать это хорошо. Если кто-то пытается создать всеобъемлющий инструмент, у него гораздо больше возможностей для неудачи. Такое ограничение функциональности делает набор инструментов надежным.
Также учтите, что если бы в оболочку были встроены такие функции, как sed или grep , было бы так же легко вызывать из командной строки, когда вам это нужно?
В заключение учтите, что некоторые функции, которые вы хотите иметь в BASH, находятся в BASH . Например, возможность сопоставления RE в BASH реализована с помощью бинарного оператора = ~ (см. Грамматику оболочки на странице руководства для более подробной информации, в частности, обратитесь к обсуждению [[[ ]] для , если ). В качестве очень быстрого примера скажем, что я ищу в файле две шестнадцатеричные цифры:
while read line; do
if [[ $line =~ 0x[[:xdigit:]]{2} ]]; then
# do something important with it
fi
done < input_file.txt
Что касается sed-подобных функциональности, посмотрите в разделе «Расширение параметров» в заголовок «Расширение» та же справочная страница. Вы увидите множество вещей, напоминающих sed. Чаще всего я использую sed, чтобы изменить тип подстановки текста. Основываясь на вышеизложенном:
# this does not take into account the saving of the substituted text
# it shows only how to do it
while read line; do
${line/pattern/substitution}
done < input_file.txt
В конце концов, "лучше" ли вышеперечисленное, чем?
grep -E "[[:xdigit:]]{3}" input_file.txt
sed -e 's/pattern/substitution/' input_file.txt
Теперь существует драйвер Linux для клавиатуры Logitech G105, он называется sidewinderd и доступен на github .