Существует несколько инструментов, которые печатают «n символов», а не «n строк». Вы уверены, что действительно хотите символы, а не линии? Все это, возможно, лучше всего сделать в Perl. Как указано (используя grep
), мы можем сделать:
pattern="$1"
shift
n="$2"
shift
grep -l "$pattern" "$@" |
while read file
do
echo "$file:" $(dd if="$file" count=${n}c)
done
Кавычки вокруг $file
правильно сохраняют несколько пробелов в именах файлов. В настоящее время мы можем обсудить использование командной строки (при условии, что имя команды равно «ngrep
»):
ngrep pattern n [file ...]
Замечу, что @litb used 'head -c $n
'; это лучше, чем команда dd
, которую я использовал. Могут быть некоторые системы без head
(но они довольно архаичны). Замечу, что версия POSIX head
поддерживает только -n
и количество строк; опция -c
, вероятно, является расширением GNU.