2015-01-08 4 views
1

Извлечение значения для ВЛАДЕЛЬЦА в следующем:Извлечение строки из строки в Linux

{{USERID 9898}}{{OWNER Wayne, Daniel}}{{EMAIL [email protected]}} 

Чтобы получить эту строку, я использую Grep в текстовом файле. Во всех остальных случаях в каждой строке содержится только одно значение, поэтому они не являются проблемой. Моя проблема заключается в удалении текста после OWNER, но перед}} скобками, оставив мне только строку «Wayne, Daniel».

До сих пор я начал изучать запись цикла for, чтобы проходить через текст персонажа за раз, но я чувствую, что есть более элегантное решение, а затем мое ограниченное знание unix.

ответ

3

Попробуйте cat file.txt | perl -n -e'/OWNER ([^\}]+)/ && print $1'

+0

возвращает одну цитату. Я еще не использовал perl, я буду смотреть на это. –

+0

Если есть несколько совпадений, это приведет к их конкатенации. Также 'cat' здесь не требуется. – Amit

3

Вы можете использовать AWK:

awk -F '{{|}}' '{sub(/OWNER +/, "", $4); print $4}' file 
Wayne, Daniel 
1

Попробуйте это. Я использую разрез

INPUT="{{USERID 9898}}{{OWNER Wayne, Daniel}}{{EMAIL [email protected]}}" 
SUBSTRING=`echo $INPUT| cut -d' ' -f3` 
SUBSTRING2=`echo $INPUT| cut -d',' -f2` 
SUBSTRING2=`echo $SUBSTRING2| cut -d'}' -f1` 
echo $SUBSTRING$SUBSTRING2 

Возможно, это не самый изящный способ, но работает.

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