Удаление строк словом с помощью sed

Моя первоначальная проблема заключалась в том, что щелчок правой кнопкой мыши «Open Contains Folder» не работал для меня в Banshee или File Roller на Ubuntu 13.10 64-bit. Диалог был диалогом Shotwell, в котором говорилось: «невозможно открыть папку». Я попытался удалить ~/.local/share/applications/mimeapps.list, но это просто забыло все настройки моего приложения по умолчанию и не влияло на мою исходную проблему.

Вот что сработало (я отметил некоторые вещи как «Без эффекта», что означает, что я думаю, что эти шаги нет, но я не могу быть уверен):

Я удалил shotwell sudo apt-get remove shotwell, а затем снова установил его sudo apt-get install shotwell. Теперь «Open Containing Folder» открылась неправильно в Disk Usage Analyzer (baobab) No Effect: я добавил nautilus.desktop к этой строке в mimeapps.list: inode/directory=nautilus-folder-handler.desktop;nautilus.desktop; No Effect: Я попытался удалить и переустановить nautalis sudo apt-get remove nautilus nautilus-folder-handler sudo apt-get install nautilus nautilus-sendto nautilus-share Я подозреваю, что это пустая трата времени. Я удалил Disk Usage Analyzer sudo apt-get remove baobab и переустановил его apt-get install baobab и исправил его!
0
задан 10 November 2017 в 12:37

4 ответа

В настоящее время неясно, могут ли строки, которые вы хотите удалить, содержать что угодно, кроме строки password. Я предполагаю, что они это делают, потому что ответ Видарло уже охватывает обратное.

Регулярное выражение (расширенное)

(^|\s)password(\s|$)

соответствует всем строкам, которые начинаются с начала, line или с пробелом, за которым следует инфикс password, за которым следует либо пробел, либо конец строки.

Соответствующая команда sed:

sed -re '/(^|\s)password(\s|$)/d'

В качестве альтернативы вы можете использовать grep в обратном режиме:

grep -vEe '(^|\s)password(\s|$)'
2
ответ дан 18 July 2018 в 03:35

если они появляются на одной линии за слово, использовать ^ и $, чтобы соответствовать начало строки и конец строки. Рассмотрим следующий пример файла foo:

$ cat foo password password!1 password2 2password

, используя СЭД, соответствующие началу и концу строки заменяет только линия, состоящая из исключительно password

$ sed '/^password$/d' foo password!1 password2 2password
5
ответ дан 18 July 2018 в 03:35

В настоящее время неясно, могут ли строки, которые вы хотите удалить, содержать что угодно, кроме строки password. Я предполагаю, что они это делают, потому что ответ Видарло уже охватывает обратное.

Регулярное выражение (расширенное)

(^|\s)password(\s|$)

соответствует всем строкам, которые начинаются с начала, line или с пробелом, за которым следует инфикс password, за которым следует либо пробел, либо конец строки.

Соответствующая команда sed:

sed -re '/(^|\s)password(\s|$)/d'

В качестве альтернативы вы можете использовать grep в обратном режиме:

grep -vEe '(^|\s)password(\s|$)'
2
ответ дан 24 July 2018 в 17:53

Если они появляются в одной строке для каждого слова, используйте кнопки ^ и $ для соответствия началу строки и конца строки. Рассмотрим следующий пример файла foo:

$ cat foo password password!1 password2 2password

Использование начала совпадения начала и конца строки заменяет только строку, состоящую только из password

$ sed '/^password$/d' foo password!1 password2 2password
5
ответ дан 24 July 2018 в 17:53

Другие вопросы по тегам:

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