Я хочу извлечь versionCode и versionName из этой строки:

package: name='com.turastory.mysampleapp' versionCode='11' versionName='1.1.4'

Я думаю, что я должен сделать эти действия:

  1. найти versionCode в строке.
  2. find '(одинарная кавычка), начиная с позиции, которую мы нашли в шаге 1.
  3. читать символы, пока не появится еще одна одинарная кавычка.
  4. Повторите тот же процесс (1 ~ 3) с versionName

Но я не знаю, как это сделать, используя скрипт Bash. Помоги мне, пожалуйста @_@

1 ответ1

2

Учитывая, что строка, из которой вы хотите извлечь versionCode и versionName, всегда будет в указанном вами формате.

package: name='com.turastory.mysampleapp' versionCode='11' versionName='1.1.4'

Скажем, строка выше сохраняется под именем package_info , тогда использование cut будет проще и намного быстрее:

  • Получить versionCode версии

    cut -d "'" -f 4 package_info
    
  • Получить versionName

    cut -d "'" -f 6 package_info
    
  • Объединяя два

    cut -d "'" -f 4,6 package_info
    

Кратко о срезе:

Утилита cut извлекает подстроку на основе delimiter (по умолчанию пробел) и fields/characters .

  • По умолчанию разделитель - это literal space , которое можно изменить с помощью -d.
  • В вашем случае разделителем является '
  • -f указывает cut для извлечения полей с относительно нумерацией (здесь 4 или 6 ) на основе определенного разделителя.

Чтобы получить практический опыт, посетите здесь и не стесняйтесь добавлять более подробную информацию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .