grep для одинарных и двойных кавычек в строке

Симлинки довольно прямолинейны, но вы должны понимать, что изменения являются -двунаправленными, изменение содержимого символической ссылки влияет на исходный файл и наоборот. Это потому, что символическая ссылка на самом деле является просто указателем на исходный файл, и когда вы открываете символическую ссылку, ваше приложение вместо этого молча открывает оригинал.

Если это то, что вы хотите, просто выполните (с терминала):

ln -s /PATH/TO/TARGET/FILE /PATH/TO/NEW/SYMLINK

Тогда вам не нужен скрипт для обновления символической ссылки. Вы также можете создать относительные символические ссылки, сделав путь к целевому файлу относительным путем (, если смотреть, откуда будет храниться символическая ссылка ). Вот так:

cd /home/myuser/folder1/folder2
ln -s../file-in-folder1 symlink-in-folder2

но если вы затем переместите свою символическую ссылку в другой каталог, она нарушит ссылку на исходный файл.

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

ls -l /PATH/TO/SYMLINKилиls -l /PATH/TO/DIRECTORY/WITH/SYMLINKS/IN/IT

Вы также можете создавать символические ссылки на сами каталоги. Применяются те же правила. Единственное отличие от обычных каталогов заключается в том, что вам не нужно повторно использовать их с флагом -rпри удалении их с помощью rm. Потому что на самом деле это не каталог... это файл, указывающий на каталог.

4
31.05.2016, 14:35
2 ответа

Дано ваш пример ввода, это произвело желаемый результат:

grep -Eo '["'\'']?[/[:alnum:]]+\.epl'

Он делает некоторые предположения о символах в ваших именах файлов (буквы, числа, косые черты) - не стесняйтесь вставлять больше символов в этот набор скобок.

1
27.01.2020, 20:59

Я думаю, это сделает это за вас:

grep -oP "(?<=['\"]|qq{)[xp/c][^\`]+" ./index.epl

Здесь сказано:

-o Оставьте только соответствующую часть.
-P Использовать регулярное выражение в стиле Perl (нам это нужно для просмотра назад)
"..." Используйте двойные кавычки, так как вы не можете избежать одиночного выражения внутри single
(? < = ...) Начать группу позитивного просмотра назад. Это означает, что все, что мы часто сопоставляем, также имеет этот шаблон прямо перед ним, но «передняя часть» не является частью шаблона, который мы хотим сохранить.
[\ '\ "] Соответствует одному из: одинарных или двойных кавычек
| qq { ИЛИ соответствует буквальной строке' qq {'
{ {1}} Как только вы найдете это совпадение с шаблоном:
[xp / c] Сопоставьте одно из x, p, / или c. (Это не так хорошо, но вы нужно проверить небольшое количество случаев.)
[^ ] + `Все, что не является обратной кавычкой, 1 или более раз

РЕДАКТИРОВАТЬ: Если хотите включение одинарных или двойных кавычек в шаблон будет немного сложнее, поскольку вы, похоже, не хотите, чтобы qq { включался в любом случае.

2
27.01.2020, 20:59

Теги

Похожие вопросы