Использование sed
:
while read text2var text5var
do
#something with text2var and text5var
done < sed 's/.*:text2=\([^,]*\),.*,text5=\([^"]*\)".*/\1 \2/') inputfile
Использование GNU AWK (gawk
):
while read text2var text5var
do
#something with text2var and text5var
done < gawk -F ',|:|"' '{sub("[^=]*=","",$3); sub("[^=]*=","",$6); print $3, $6}' inputfile
Чтобы использовать другие версии AWK, у которых нет регулярных выражений для разделителей полей, используйте регулярное выражение, похожее на команду sed
, или используйте много разбиений:
while read text2var text5var
do
#something with text2var and text5var
done < awk -F ',' '{split($1,t2,"text2="); split($4,t5,"\""); split(t5[1],t5,"="); print t2[2], t5[2]}' inputfile
Использование cut
:
while read text2var text5var
do
#something with text2var and text5var
done < cut -d , -f 1,4 --output-delimiter='=' inputfile | cut -d '"' -f2 | cut -d = -f1,3 | cut -d : -f 2 | cut -d = --output-delimiter=' ' -f1,2
GNU cut
может потребоваться для использования опции --output-delimiter
. Это может быть некрасиво, но по крайней мере это не вызывается четыре раза в каждой строке.