2016-05-01 2 views

ответ

1

Вы можете удалить все окружающие два значения с:

sed 's/.*<\(.*\)>.*/\1/' 

Тест:

% echo 'field = <0xaaa 0xbbb>;' | sed 's/.*<\(.*\)>.*/\1/' 
0xaaa 0xbbb 

Если вам необходимо разыменования значения переменных:

declare -a values=($(sed 's/.*<\(.*\)>.*/\1/' input_file)) 

echo "${values[0]}" # 0xaaa 
echo "${values[1]}" # 0xbbb 
# ... If there are more lines in input_file then the array will be bigger ... 
# ${values[2]} will contain next lValue 
# ${values[3]} will contain next rValue 
# ... and so on ... 
+0

Это прекрасно работает, но Я понятия не имею, как – user1273684

+1

Это будет захватывать что-либо в '<>', если вам нужно что-то более конкретное для hex, вы можете попробовать som что-то вроде: 'grep -o '\ b0x [[: xdigit:]] \ {3 \} \ b'' –

+0

@ A.Danischewski Это верно, но это может быть необязательно для потребностей OP. И не знал о 'xdigit', что хороший. – andlrc

Смежные вопросы