2016-02-04 2 views
0

Получить строку между двумя одинарными кавычками с использованием только Grep функцийGrep строка между двумя одинарными кавычками, используя только Grep функции

0x00000000: 00000000 0000000f 00320031 00340033 '........1.2.3.4.' 

Я хочу, чтобы мой вывод как ........ 1.2.3.4.

Я попытался grep -o '\'[^\']*'

, но он не работает?

+0

Попробуйте это: 'Grep -о« '[^'] *» «file» ИЛИ 'sed -n 's /.*' \ ([^ '] * \)'. */\ 1/p" file' – sat

+0

Почему вас беспокоит, если в ответе используется grep или какой-либо другой стандартный инструмент UNIX например 'cut' или' sed' или 'awk'? 'cut' стал бы очевидным инструментом для этого. –

+0

Спасибо, чувак, что он работает, но возвращается '........ 1.2.3.4.' Теперь мы можем использовать echo "$ {'........ 1.2.3.4." // "'"} ", чтобы получить ............. 1.2.3.4. –

ответ

0

bash не позволяет вставлять одинарные кавычки внутри строки single quoted. Даже не сбежал.

Вам нужно grep -o "'[^]'*"

Если вы хотите исключить ведущий апостроф, и если вы используете GNU Grep, затем

grep -oP "(?<=').*?(?=')" 
+0

Ваше первое предложение не совсем верно, посмотрите на мой ответ. – 123

+0

технически, это не одна строка с кавычками: это [ANSI-C quoted] (https://www.gnu.org/software/bash/manual/bashref.html#ANSI_002dC-Quoting) строка –

+0

Я только что обновил мой ответ с этой ссылкой! И хотя это лучший вид правильного, я думаю, что он достаточно близко, чтобы считаться одним и тем же для цели вопроса. – 123

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