Как я удаляю все строки с “.png” в файле?

Существует много вопросов здесь, и я приложу все усилия для ответа на них. Я уверен, что более хорошо осведомленные, чем смогу помочь Вам далее. (Я ценил бы, если те люди могли бы выручить меня также.)

В *отклоняют, все - файл. Например, Ваш CD-ROM является файлом.

  • /dev - Здесь Вы найдете физические устройства, а также вещи, о которых Вы обычно не думали бы как устройства, такие как/dev/null.
  • /media & /mnt каталоги, где можно смонтировать физическое устройство, такое как CD-ROM, раздел жесткого диска, карта с интерфейсом USB, и т.д.

Цель mount (и противоположное umount) должен позволить динамическое монтирование устройств. Что я имею в виду, вот то, что, возможно, можно хотеть только смонтировать устройство при определенных обстоятельствах и в других случаях иметь его не с готовностью доступный. Можно хотеть смонтировать целую файловую систему в/mnt при восстановлении системы. Можно хотеть смонтировать образ дисков (например, foo.iso) время от времени. И т.д.

Можно принять решение смонтировать устройство в/dev или в / медиа или в/mnt. Существуют более или менее корректные способы сделать это. Например, от Вашего вопроса Вы говорите:

/ медиа это - точка монтирования для съемных устройств

/mnt это - временная точка монтирования

Это в значительной степени корректно. Читайте здесь для того, как / медиа и/mnt должны использоваться согласно Стандарту Иерархии Файловой системы. Я делаю это довольно неправильно, решив использовать / медиа, когда на самом деле я должен использовать/mnt большую часть времени. Также стоит отметить, что внутренний жесткий диск со связанными разделами может быть упомянут, несколько смутно, removeable медиа.

Я нахожусь на OS X здесь, таким образом, я не могу проверить прямо сейчас (BSD делает вещи немного по-другому относительно оптических дисков), но/dev/cdrom является файлом устройств для Вашего CD-ROM. Как/dev/cdrw. Посмотрите '->' в ls -l вывод в Вашем вопросе? Это указывает, что и/dev/cdrom и/dev/cdrw символически связаны с/dev/sr0. 'сэр' является названием драйвера устройства; 'sr0' является именем файла устройств.

/media/Ubuntu 11.04 i386 просто изображение .iso, которое было автосмонтировано в /media.

Я надеюсь, что это помогает немного.

4
26.08.2011, 06:41
4 ответа
cat file | grep -v "\.png" >new_file_without_pngs

Обновленный для комментария:

egrep -iv "\.(png|jpg|jpeg|gif|etc)" file >new_file
14
27.01.2020, 20:45
  • 1
    никакая встроенная опция? Я хотел бы избавиться от ".png" и ".jpg" в этом отношении. Также случай-insenstive? –  simpatico 26.08.2011, 07:00
  • 2
    я добавил бы a $ в конце, на всякий случай. –  enzotib 26.08.2011, 10:47

Для оперативного варианта редактирования можно использовать sed как следующее:

$ sed -i -r 's/.*\.(png|jpg).*//I' file

Это удалит строки, содержащие также .png или .jpg непосредственно в файле. -i опция передала sed означает 'оперативное редактирование'. Сделайте резервное копирование своего файла прежде, чем выполнить эту команду или попробуйте его сначала без -i опция, если Вы не уверены.

I флаг должен выполнить нечувствительное к регистру соответствие.

6
27.01.2020, 20:45
  • 1
    Как насчет того, чтобы использовать sed удаляют команду 'd': sed-i-r '/\. (png|jpg) $/I d' файл –  frielp 26.08.2011, 11:16
  • 2
    можно добавить расширение-i так, чтобы это создало файл резервной копии: sed-i .bak-r 's/. *\. (png|jpg).*//я' файл –  Julian 26.08.2011, 12:08
  • 3
    +1 к "использованию d"комментарий: использование s/.*blah.*// оставит незаполненные строки, это не удалит строки. –  glenn jackman 26.08.2011, 13:23

Если Вы имеете sponge можно выгрузить содержание файла на месте как это:

grep -E -iv "\.(png|jpg|jpeg|gif)" file | sponge file
0
27.01.2020, 20:45

Вы можете использовать Vim в режиме Ex:

ex -sc 'g/\.png/d' -cx file
  1. g глобальный поиск

  2. d удалить

  3. x сохранить и закрыть

1
27.01.2020, 20:45

Теги

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