Intereting Posts
Как я могу пакетно экспортировать весь контент, содержащийся в символических ссылках? (а затем удалить их все) Экскурсия на пульте? git –diff как команда для локальных локальных сетей Linux Ethernet через USB (g_ether) автоматически (повторно) подключается MySQL установлен, но команда mysql не найдена Firefox / Icecat: ошибка версии SQLite: приложение обновлено, но ваша версия SQLite слишком стар и приложение не может работать Объяснение времени сборки версии в отличие от номера версии, например OpenSSL 1.0.1e против h Выполнять команды по отключению tmux Могу ли я определить архитектуру набора инструкций в vimrc? (ARM против x86) Может ли не-sudoer изменять что-либо за пределами домашнего каталога Ответ yes в сценарии bash Просмотр заметок для определенного пакета в ArchLinux без удаления пакета? Как изменить @INC в Perl Какие строки следует искать в /var/log/auth.log? Удалите все файлы, имена которых соответствуют определенному шаблону

Как grep для чего-то, что находится в переменной среды и имеет косую черту?

Я хочу grep файл, и я хочу получить все строки, которые имеют определенную переменную среды (точнее, $PWD ).

Конечно, используя только

 cat file | grep '/'$PWD'/' 

не работает, поскольку $PWD содержит слэши.

Я пытаюсь понять, как это сделать правильно, но я придумываю только странные и сложные решения. Какой простой способ сделать это?

Просто используйте двойную кавычку вместо одиночной кавычки, и вам не нужно использовать cat (см. UUOC ):

 grep -F -- "$PWD" file 

И помните, что без -F , $PWD будет рассматриваться как регулярное выражение в отличие от строки, которую нужно искать в file .

Поскольку косая черта не является особым символом, вы можете использовать ее свободно:

 grep "$PWD/" file 

Добавление хвоста / не вызовет никаких проблем. Однако косая черта – это особый символ в awk и sed. Шаблоны заключены в / /. В этой ситуации вы можете использовать

 awk -v pattern="$PWD/" '$0 ~ pattern' file 

чтобы избежать грамматики awk / pattern / {action}. Здесь «~» – оператор совпадения, $ 0 означает всю строку.