Unix cut операция - PullRequest
       7

Unix cut операция

3 голосов
/ 15 ноября 2010

У меня есть такая строка:

uid=2560(jdihenia) gid=1000(undergrad)

Я хочу просто получить часть undergrad с именем переменной var1. Поэтому я использовал команду

var1=`echo "uid=2560(jdihenia) gid=1000(undergrad)" | cut -d "(" -f 3`

но при этом значение undergrad) будет присвоено переменной var1. Подскажите, пожалуйста, как я могу получить только часть undergrad для переменной var1?

Ответы [ 6 ]

3 голосов
/ 15 ноября 2010
var1=$(cmd |sed 's/.*(\([^)]*\))/\1/')
3 голосов
/ 15 ноября 2010

Если вы хотите, чтобы буквальный текст «undergrad» в скобках, это должно работать:

cut -d "(" -f 2 <text> | cut -d ")" -f 1

или эквивалентно

echo <text> | cut -d "(" -f 2 | cut -d ")" -f 1
3 голосов
/ 15 ноября 2010

Если эта строка взята из id, тогда вы можете просто позвонить id -gn.

2 голосов
/ 15 ноября 2010

echo "$str" | awk -F'[()]' '{print $4}'

2 голосов
/ 15 ноября 2010
var1="uid=2560(jdihenia) gid=1000(undergrad)"
var1=${var1#*\(*\(}
var1=${var1%%\)*}
1 голос
/ 15 ноября 2010
var1=$( echo "uid=2560(jdihenia) gid=1000(undergrad)" | grep -Po 'gid=.*\(\K.*(?=\))')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...