Если нет никаких разрывов, следующее могло бы оказаться полезным (хотя поверхностный и не устойчивые касающиеся пограничные случаи и общность) - только для понимания:
FILES="c0.pdf"
for i in $(seq 1 20); do FILES="${FILES} c${i}.pdf"; done
gs [...args...] $FILES
Если могут быть разрывы, некоторые [ -f c${i}.pdf ]
проверка могла быть добавлена.
Редактирование также видит этот ответ, согласно которому Вы могли (использование Bash) использование
gs [..args..] c{1..20}.pdf
Я буду использовать cut
, так как это довольно легко к deducate это -f2
означает "вторую часть" и -d'"'
средства сокращаются на двойной кавычке.
$ output='test="Thanks serverfault"'
$ string=$( echo $output | cut -f2 -d'"' )
$ echo $string
Thanks serverfault
Если Вы действительно хотите кавычки, можно просто добавить их назад сами, это просто заставляет ответ выглядеть более сбивающим с толку, чем это должно быть.
Если Вы действительно хотите использовать sed
(удачный для Вас, это сохраняет кавычки также):
$ output='test="Thanks serverfault"'
$ string=$( echo $output | sed 's/^test=//' )
$ echo $string
"Thanks serverfault"
Объяснение sed
:
s/^test=//
string find/replace mode ^ | ^ replace with nothing
starts with test=
Никакая потребность в sed; удару и sh встроили переменные модификаторы:
$ output='test="Thanks serverfault"'
$ string=\"${output#*\"}
$ string=${string%\"*}\"
$ echo $string
"Thanks serverfault"
# удаляет префиксы, % является суффиксами.
Это должно быть быстрее, чем вызов внешних программ.
grep
имеет опцию для того, чтобы только возвратить совпавшую строку.echo $output | grep -o '"[^"]*"'
достиг бы того, с чем Вы делаете вышеsed
. – Ladadadada 02.03.2013, 20:31