У меня есть этот маленький script в sh
(Mac OSX 10.6), чтобы просмотреть массив файлов. На этом этапе Google перестает быть полезной:
files="*.jpg"
for f in $files
do
echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*'
name=$?
echo $name
done
До сих пор (очевидно, для вас, гуру-оболочки) $name
просто содержит 0, 1 или 2, в зависимости от того, было ли grep
установлено, что имя файла соответствует предоставленному вопросу. Я хотел бы захватить то, что внутри parens ([a-z]+)
, и сохранить его переменной.
Я бы хотел, чтобы использовал grep
, если возможно. Если нет, пожалуйста, не используйте Python или Perl и т.д. sed
или что-то в этом роде - я новичок в оболочке и хотел бы атаковать это от угла пуриста * nix.
Кроме того, как super-cool bonu, мне любопытно, как я могу объединить строку в оболочке? Я захватил группу, это строка "somename", хранящаяся в $name, и я хотел добавить строку ".jpg" до конца, могу ли я cat $name '.jpg'
?
Пожалуйста, объясните, что происходит, если у вас есть время.