Bash - символы Извлечения от строки

Если нет никаких разрывов, следующее могло бы оказаться полезным (хотя поверхностный и не устойчивые касающиеся пограничные случаи и общность) - только для понимания:

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

-1
02.03.2013, 18:07
2 ответа

Я буду использовать 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=
5
28.01.2020, 05:06
  • 1
    Спасибо чувак Сойки я изучаю sed btw и ожидал ответ, вовлекающий чувака sed –   02.03.2013, 19:02
  • 2
    извините для того, чтобы не сказать это в потоке, но мог бы быть другой текст в файле, который я отредактирую через удар...., просто дают мне команду sed, которая извлечет значение между первым "" в файле –   02.03.2013, 19:14
  • 3
    grep имеет опцию для того, чтобы только возвратить совпавшую строку. echo $output | grep -o '"[^"]*"' достиг бы того, с чем Вы делаете выше sed. –  Ladadadada 02.03.2013, 20:31
  • 4
    @Ladadadada, спасибо, я не знал это. Werulz, я надеюсь, что это отвечает на Ваш вопрос. –   02.03.2013, 20:37

Никакая потребность в sed; удару и sh встроили переменные модификаторы:

$ output='test="Thanks serverfault"'
$ string=\"${output#*\"}
$ string=${string%\"*}\"
$ echo $string
"Thanks serverfault"

# удаляет префиксы, % является суффиксами.

Это должно быть быстрее, чем вызов внешних программ.

3
28.01.2020, 05:06

Теги

Похожие вопросы