2013-03-15 2 views
1

У меня есть переменная, которая содержит многострочную строку. Мне нужно прочитать первые две строки и выполнить некоторую обработку на основе их значений. Как я могу это сделать?Чтение из многострочной переменной в оболочке

Значение выборки в моей переменной

Description: some value 
Entity: Some value 
Fixed 

Мне нужно, чтобы получить первые две строки (Описание и сущностей) как различные переменные.

+0

http://www.whathaveyoutried.com/ – ormaaj

ответ

3

С sed:

$ echo "$var" 
Description: some value 
Entity: Some value 
Fixed 

$ var2=$(sed -n 1p <<< "$var") 

$ var3=$(sed -n 2p <<< "$var") 

$ echo $var2 
Description: some value 

$ echo $var3 
Entity: Some value 

Если вы хотите только значения:

$ var2=$(sed -n '1s/.*: //p' <<< "$var") 

$ var3=$(sed -n '2s/.*: //p' <<< "$var") 

$ echo $var2 
some value 

$ echo $var3 
Some value 

То же самое с grep:

$ var2=$(grep Description <<< "$var") 

$ var3=$(grep Entity <<< "$var") 

$ echo $var2 
Description: some value 

$ echo $var3 
Entity: Some value 

только значения:

$ var2=$(grep -Po "Description: \K.*" <<< "$var") 

$ var3=$(grep -Po "Entity: \K.*" <<< "$var") 

$ echo $var2 
some value 

$ echo $var3 
Some value 
2

На примере:

$ echo "$MYVAR" 
Description: some value 
Entity: Some value 
Fixed 

$ VAR1=$(echo "$MYVAR" | sed -n 1p) 

$ VAR2=$(echo "$MYVAR" | sed -n 2p) 

VAR1 и VAR2 теперь содержат первую и вторую линию MYVAR соответственно:

$ echo $VAR1 
Description: some value 

$ echo $VAR2 
Entity: Some value 
Смежные вопросы