Bash для чтения двух конкретных строк из текстового файла и использования частей из них в качестве переменной

Итак, я получил текстовый файл, который выглядит так

# begin build properties # autogenerated by buildinfo.sh ro.build.id=LRX21T ro.build.version.incremental=G900FXXU1BOK6 ro.build.version.sdk=21 ro.build.version.codename=REL ro.build.version.all_codenames=REL ro.build.version.release=5.0 ro.build.version.security_patch=2015-11-01 ro.build.version.base_os= ro.build.date=Mon Nov 23 14:29:35 KST 2015 ro.build.date.utc=1448256575 ro.build.type=user ro.build.user=dpi ro.build.host=SWHD4408 ro.build.tags=release-keys ro.product.model=SM-G900F ro.product.brand=samsung ro.product.name=kltexx ro.product.device=klte ro.product.board=MSM8974 # ro.product.cpu.abi and ro.product.cpu.abi2 are obsolete, # use ro.product.cpu.abilist instead. ro.product.cpu.abi=armeabi-v7a ro.product.cpu.abi2=armeabi ro.product.cpu.abilist=armeabi-v7a,armeabi ro.product.cpu.abilist32=armeabi-v7a,armeabi ro.product.cpu.abilist64= ro.product.manufacturer=samsung .... 

Я хочу, чтобы линии

  • ro.product.model = СМ-G900F
  • ro.build.version.incremental = G900FXXU1BOK6

но не полный, только то, что приходит после = so SM-G900F и G900FXXU1BOK6 .

Я знаю, что это может быть сделано каким-то образом, либо с awk , либо с grep но я не знаю, как именно. большое спасибо

4 Solutions collect form web for “Bash для чтения двух конкретных строк из текстового файла и использования частей из них в качестве переменной”

С GNU sed:

 sed -n 's/^ro.product.model=//p;s/^ro.build.version.incremental=//p' file 

или

 sed -nr 's/^(ro.product.model|ro.build.version.incremental)=//p' file 

Вывод:

 G900FXXU1BOK6
 SM-G900F

или с текущим GNU bash:

 #!/bin/bash while read -r line; do [[ $line =~ ^(ro.product.model=) ]] && r="${line#*${BASH_REMATCH[1]}}"$'\n'"$r" [[ $line =~ ^(ro.build.version.incremental=) ]] && r="${line#*${BASH_REMATCH[1]}}" done < file echo "$r" 

Вывод:

 SM-G900F
 G900FXXU1BOK6

Используйте grep для соответствия строке и cut чтобы выбрать нужную деталь:

 grep ro.product.model input.txt |cut -d= -f2 

Параметр -d = как разделитель, а параметр -f выбирает второе поле.

Используйте команду ниже, она даст вам результат:

 egrep 'ro.product.model|ro.build.version.incremental' a.txt | awk -F'=' '{print $2}' 

egrep такой же, как grep -e, и используется здесь для поиска нескольких выражений в одно и то же время. Awk просто выполняет извлечение данных после «=»

G900FXXU1BOK6

SM-G900F

 awk -F= '$1 ~ /^(ro.product.model|ro.build.version.incremental)$/ { print $2 }' 

Используя полевой разделитель = , напечатайте второе поле, только если первое поле соответствует шаблону регулярного выражения ^(ro.product.model|ro.build.version.incremental)$

  • Извлечь начальные и конечные координаты в соответствии с определенной длиной нефиксированного интервала
  • Скрипт для добавления пути к файлу рекурсивно
  • Редактирование INI-подобных файлов со сценарием
  • Объединить текстовые файлы с 1-м столбцом и разницу в выходном файле
  • Преобразование коротких повторяющихся слов в столбцах в числа
  • Использование find и sed для копирования 20-й строки многих файлов в один файл
  • Какая команда (ы) будет кормить текстовый файл с разделителями табуляции и вырезать каждую строку до 80 символов?
  • Разбор текстового файла с разделителями в bash как аргументы команды
  • Преобразование настраиваемых тегов с аргументами
  • Разделить файл на несколько небольших файлов, разделяемых символом новой строки
  • Преобразование списка файлов, разделенных новыми строками, в переменную
  • Найти совпадения из индексного файла без точного соответствия и распечатать последнее поле
  • Interesting Posts

    Использовать имена хостов клиента для DNS

    Грепные линии от врага до foe2 (не включены), regexp

    График Gnome не может запускать hdparm

    Найти рекурсивно все архивные файлы различных форматов архивов и искать их для шаблонов имен файлов

    Пробуждение от спящего режима спящего режима (Linux Mint 18 Cinnamon)?

    Какая версия Debian – это мой Kali Linux?

    Fedora 20 замерзает при перезагрузке и отключении питания

    я могу получить доступ imap, используя только postfix и mailx?

    Апачский запрос зависает за 2 минуты

    здание pidgin-otr-4.0.0 на CentOS 7: не может найти pidgin и purple

    Использование «$ {a: -b}» для назначения переменных в скриптах

    Как заставить проверку заклинаний Кейт игнорировать пробег слов?

    Проблемы со звуком BSD с Realtek 892

    В сценарии оболочки bash может быть $ 2 равным нескольким аргументам в командной строке или мне нужны $ 3, $ 4 и т. Д. …?

    Сохранять диалоги «Zenity» всегда на верхнем плане на переднем плане

    Linux и Unix - лучшая ОС в мире.