удаление текста до и после () - PullRequest
2 голосов
/ 18 апреля 2011

Как убрать текст до первого (и после)?

INSERT INTO `todel` VALUES (1,'akbar\'s','Mumbai, Delhi road, India');
INSERT INTO `todel` VALUES (2,'amar\"s','South Africa, ghana');

Ожидаемый результат будет таким ...

1,'akbar\'s','Mumbai, Delhi road, India'
2,'amar\"s','South Africa, ghana'

Ответы [ 3 ]

2 голосов
/ 18 апреля 2011

Рубин (1,9 +)

$> ruby -ne 'print $_.sub(/.*\(|\).*$/,"")' file
1,'akbar\'s','Mumbai, Delhi road, India'
2,'amar\"s','South Africa, ghana'

или оболочка (удар)

$> while read -r line; do line=${line#*(}; echo ${line%)*}; done <file
1,'akbar\'s','Mumbai, Delhi road, India'
2,'amar\"s','South Africa, ghana'

или awk

$> awk '{sub(/.*\(/,"");sub(/\).*/,"")}1' file
1,'akbar\'s','Mumbai, Delhi road, India'
2,'amar\"s','South Africa, ghana'

или сед

$> sed -rn 's/.*\(//;s/\).*//p' file
1,'akbar\'s','Mumbai, Delhi road, India'
2,'amar\"s','South Africa, ghana'
1 голос
/ 18 апреля 2011

awk может принимать регулярное выражение в качестве разделителя полей, поэтому используйте любую скобку в качестве разделителя полей и просто введите второе поле:

awk -F'[()]' '{print $2}' filename
0 голосов
/ 18 апреля 2011

Вы можете удалить все от начала строки до первого ( и от (включая) последнего ) до конца строки с помощью sed:

sed -r 's/^[^(]*\(.*)\)[^)]*$/\1/'
...