2013-04-03 3 views
0

Если у меня есть следующая строка:как я могу разделить строку на основе строки

variable_A=12345variable_B=54321variable_C=24680 

как я могу разделить его на основе содержимого строки, так, например, если бы я хотел, чтобы извлечь все после того, как «variable_B» результат будет

variable_B=54321variable_C=24680 

«разделитель/строка» будет включена в окончательный result0

это существо в среде Баш. спасибо за вашу помощь

ответ

0

Попробуйте это:

Использование :

$ echo 'variable_A=12345variable_B=54321variable_C=24680' | 
    grep -o "variable_B.*" 

Использование :

$ echo 'variable_A=12345variable_B=54321variable_C=24680' | 
    sed -r '[email protected]*(variable_B.*)@\[email protected]' 

Выход являются:

variable_B=54321variable_C=24680 
+0

работал отлично, спасибо! – lacrosse1991

2

Так вы просто хотите удалить все перед разделителем, но сохраните все остальные переменные в своем конечном выпуске?

Другой чистый Баш подход удаляет вплоть до ограничителя и добавляет разделитель назад перед:

$ foo="variable_A=12345variable_B=54321variable_C=24680" 
$ foo="variable_B${foo#*variable_B}" 
$ echo "${foo}" 
variable_B=54321variable_C=24680 
+0

спасибо! пошел с решением sputnick, хотя это тоже похоже на отличную альтернативу. – lacrosse1991

+0

@ lacrosse1991 Для такой простой манипуляции с строкой это на самом деле предпочтительное решение (если только вы не застряли с оболочкой, которая его не поддерживает), поскольку она не порождает отдельный процесс (каждая команда в трубе выполняется в подоболочке). Код также более компактен. –

+0

Звучит неплохо, работая над оптимизацией скрипта, в котором я нуждался, придется попробовать переключиться на этот метод :) – lacrosse1991

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