Intereting Posts
Соответствие значений в столбцах WiFi не работает после восстановления из спящего режима (время аутентификации) Как получить имя файла и номер задания «at» Причина, по которой изменился бы ключ RS RS-ов? информация о ходе работы через pv для копирования каталога Тестирование SSH Доступ из внешней сети Ярлыки клавиш быстрого доступа не позволяют мне использовать одну и ту же комбинацию LightDM GTK + greeter не использует правильную тему курсора Ошибка при перенаправлении портов с помощью iptables: нет цепочки / цели / соответствия этим именем клавиатурные жесткие клавиши переназначения? возможно ли программно изменить рабочий каталог родительской оболочки? Как распознать состояние праздности в течение определенного периода в сценарии? lxd с собственным br0 Сеть недоступна в centos conteiner Не удается войти в Debian 7.7 с помощью пользователя Kerberos / NIS Кто написал «ядро Linux» (Линус Торвальдс и его команда)?

Как я извлекаю пути к файлам из текстового файла?

У меня есть файл, который имеет список путей, например, так:

"1" "/user/bin/share" "2" "/home/user/.local" "3" "/root/" 

Есть ли способ извлечь только пути? Я не хочу цифры или кавычки. Как я могу sed или grep пути из файла? Какое регулярное выражение потребуется для такой задачи?

Если все пути начинаются с / , вы можете просто сопоставить / следовать последовательности не- " символов:

 $ grep -o '/[^"]*' file /user/bin/share /home/user/.local /root/ 

В качестве альтернативы, для более структурированного подхода используйте awk чтобы убрать кавычки и напечатать только второе поле:

 awk '{gsub(/"/,"",$2); print $2}' file 

Предполагая, что пути не содержат символов новой строки,

 $ sed 's/^.*[[:blank:]]"//; s/"$//'  

Сначала код sed удаляет все в каждой строке вплоть до первого символа " включая " которому предшествует пробел (пробел или табуляция), а затем удаляет " в конце».

Это позволяет путям содержать пробелы и встроенные " символы, но не комбинацию пробел + " .

Почему бы не простой

 awk -F\" '{print $4}' file /user/bin/share /home/user/.local /root/ 

Работа?

Простой подход Выньте поле № 4 с кавычками в качестве разделителей, используя cut .

 $ cut -f4 -d\" file /user/bin/share /home/user/.local /root/ $