LINUX.ORG.RU

sed & bash for dummies

 , ,


0

3

Привет, ЛОР.

ЛОР, научи меня пользоваться sed и bash.
Имею команду, которой получаю имя репы андроид девайса(циан или омни например) на гитхабе

curl --silent "https://api.github.com/search/repositories?q=@$TEAM+android_device+$DEVICE" | grep "\"name\"" | awk '{print $2}' | sed 's/\"//g' | sed 's/,//g'
На выходе получаю например android_device_samsung_n7000.
Как мне теперь вычленить 2 слова(опустив 'android_device_') и записать их в разные переменные? Например:
MANUFACTURER=samsung
DEVICE=n7000

UPD. Бред какой. Я же название девайса получаю из переменной $DEVICE. И записывать мне её заново не надо. Моя ошибка.

UPD2. Проблема решена. sed 's/android_device_//g' && sed 's/_.*$//g' выдал мне желаемую строку.
Всем спасибо

UPD3. Всего-то надо было быть внимательнее.

★★★★

Последнее исправление: yacuken (всего исправлений: 3)

Подпишусь, пожалуй. Это почти из той же серии, что и про парсинг.

Deleted
()

А что если в конце всего этого передать вывод команде cut c разделителем «_». Предистроию опустил:

MANUFACTURER=`echo  android_device_samsung_n7000 | cut -d_ -f3`
DEVICE=`echo  android_device_samsung_n7000 | cut -d_ -f4`
echo $MANUFACTURER=samsung
echo $DEVICE=n7000

Alternating_Current
()
Ответ на: комментарий от Alternating_Current

Благо этот скрипт работает конкретно для гитхаба и репов циана и омни(но можно ещё что-то). которые в этом деле беспрекословны (:

android_device_samsung_n7000
android_device_lge_hammerhead
android_device_asus_flo
android_device_etc_etc
Так же с kernel и hardware.

yacuken ★★★★
() автор топика
Последнее исправление: yacuken (всего исправлений: 1)
#!/bin/bash

a=($(echo 'android_device_samsung_n7000' | sed 's/_/ /g'))
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}
echo ${a[3]}
anonymous
()
Ответ на: комментарий от anonymous

pure bash

Анонимус не торт!

srcstr="android_device_samsung_n7000"
devarr=${srcstr//android_device_/}
devarr=(${devarr//_/ })
model="${devarr[0]}"
modnum="${devarr[1]}"

echo "Модель = $model"

echo "Номер = $modnum"
Umberto ★☆
()
str=android_device_samsung_n7000
if [[ $str =~ android_device_([a-z0-9]+)_([a-z0-9]+) ]]; then
 echo "manufacturer = ${BASH_REMATCH[1]}, device = ${BASH_REMATCH[2]}"
else
 echo fail
fi
anonymous
()
Ответ на: pure bash от Umberto

pure sh

Umberto не торт! ;-)

#!/bin/sh                                                                        
                                                                                 
srcstr="android_device_samsung_n7000"                                            
str=${srcstr#android_device_}                                                    
model=${str%%_*}                                                                 
modnum=${str#*_}                                                                 
                                                                                 
echo "Модель = $model"                                                           
echo "Номер = $modnum"

unterwulf
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.