Как мне сделать регулярное выражение для этого совпадения - PullRequest
1 голос
/ 28 мая 2020

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

Как мне повернуть: bin -> /system/bin

К /system/bin bin

с использованием sed.

aka Удалите стрелку и выведите текст после нее на передний план.

Я пробовал s/->.*/^/g, но это не сработало.

1 Ответ

1 голос
/ 28 мая 2020

Команда s/->.*/^/g сопоставляет первую -> и остальную часть строки и заменяет совпадение на ^. Флаг g здесь избыточен.

Поскольку в вашей строке есть только один ->, с awk это становится намного проще:

awk -F'->' '{print $2" "$1}' file
awk -F'[[:space:]]*->[[:space:]]*' '{print $2" "$1}' file

-F'->' устанавливает разделитель полей на -> ([[:space:]]*->[[:space:]]* будет включать любые пробелы до и после него), и вам нужно будет распечатать два значения поля в обратном порядке.

С sed вы можете рассмотреть решение вроде

sed 's/\(.*\) -> \(.*\)/\2 \1/' file

Здесь \(.*\) -> \(.*\) будет соответствовать и захватывать любое количество символов до -> в Группу 1, тогда -> будет соответствовать ->, а последний \(.*\) будет соответствовать и захватите любое количество символов в группу 2. Замена \2 \1 поменяет местами значения двух групп.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...