Возможно, вы найдете awk
для этой задачи. Это идея утилита для обработки столбчатых данных:
#!/bin/sh
string="1234 1 xyz123 4321 1 456778 32124 1 abbba 56789 1 hfhfn456"
match1=$(echo "$string" | awk '{print $9}')
match2=$(echo "$string" | awk '{print $6}')
match3=$(echo "$string" | awk '{print $12}')
match4=$(echo "$string" | awk '{print $3}')
echo "$match1"
echo "$match2"
echo "$match3"
echo "$match4"
сравнить их значения против каждого определенного набора:
#!/bin/sh
#abbba
#456778
#hfhfn456
#xyz123
string="1234 1 xyz123 4321 1 456778 32124 1 abbba 56789 1 hfhfn456"
match1=$(echo "$string" | awk '{print $9}')
match2=$(echo "$string" | awk '{print $6}')
match3=$(echo "$string" | awk '{print $12}')
match4=$(echo "$string" | awk '{print $3}')
if [ "$match1" = "abbba" ]
then echo "match1 is abbba"
fi
if [ "$match2" = "456778" ]
then echo "match2 is 456778"
fi
if [ "$match3" = "hfhfn456" ]
then echo "match3 is hfhfn456"
fi
if [ "$match4" = "xyz123" ]
then echo "match4 is xyz123"
fi
Вы хотите напечатать эти конкретные поля или хотите ли вы назначить каждую отдельную переменную или что? Вы сами пытались решить эту проблему? Если да, в чем проблема, с которой вы сталкиваетесь? –
Каков шаблон, который вам нужен, чтобы найти эти строки? – Barmar
Кажется, это просто, используя 'awk'. Прокрутите поля в строке. Если поле соответствует шаблону, напечатайте следующее поле. [ – Barmar