У меня есть простой запрос, связанный с выделением и заменой текста в Linux. Я использую команду sed
. У меня есть следующий текст:
Привет мир, я просто простой текст для отображения.
Теперь я хочу печатать в «hello world», только я могу сделать это, используя следующую команду в linux.
echo "hello world, I am just simple text for display." | sed 's/, I am.*//g'
Теперь я хочу полностью изменить эту функцию, как я могу удалить «привет мир», используя простую команду, подобную sed
.
Требуется вывод:
, я просто простой текст для отображения.
Я бы предпочел использовать команды linux (sed
и т. Д.).
Для инвертирования эффекта команды И хранения той же части строки, которая будет согласована (предполагающий, что это - единственная часть фиксации строки и Вы хотите избавиться от любой другой части, которая может варьироваться) можно сделать:
echo "hello world, I am just simple text for display." | sed 's/^.*\(, I am.*\)/\1/g'
Результат:
, I am just simple text for display
, Что делает регулярное выражение:
Таким образом, Вы имеете точный обратный эффект команды в Вашем вопросе, с помощью той же части строки, чтобы сделать соответствие.
$ echo "hello world, I am just simple text for display." | sed 's/^hello world//'
, I am just simple text for display.
Объяснение: в sed (и в другом месте, как в энергии), карат использования (^
) для указания запускается строки. Замена удаляет просто тот текст.
Вы могли использовать sed
опция s
. Команда будет,
echo "hello world, I am just simple text for display."|sed 's/.*, //g'
дает
I am just simple text for display.
Объяснение
.*
соответствия любое количество любых символов ,<space>
соответствия, и пространство .*,<space>
соответствия все прежде и пространство включая обоих, и ничем заменяет их.