удаление псевдонима из файла с помощью sed

Я создал программу развертки ping, которая сохраняет полученный IP-адрес в файл, называемый хостами. Затем я хотел удалить свой собственный IP-адрес из файла, не зная, что такое мой IP-адрес, поэтому я попытался сделать следующее:

alias ownip='hostname -I' sed ownip ./host 

Это не сработало, что привело к следующей ошибке:

  sed: -e expression #1, char 1: unknown command: `o' 

Итак, как я могу удалить свой собственный IP-адрес из файла?

  • Извлечение частей строки, разделенной пробелами
  • Как удалить все строки, которые имеют одно значение в строке?
  • Sed: Заменить N первых вхождений персонажа
  • Как извлечь текст с помощью sed
  • Редактирование вложенного текста и определенных строк в файле с использованием сценария bash
  • Объедините вывод из df -h / dev / xvda1 в одну строку
  • Заменить символы в пользовательской части адреса электронной почты
  • И операция по 2 столбцам (даты доступа и mofidy) в файле в linux
  • 3 Solutions collect form web for “удаление псевдонима из файла с помощью sed”

    Если входной файл «host» – это просто файл, в котором каждая строка является IP-адресом, и вы хотите удалить все IP-адреса, выводимые по hostname -I из этого файла, попробуйте следующее:

     sed -i "$(hostname -I | sed 's/\([.:[:xdigit:]]\{1,\}\)/\/\1\/d;/g')" ./host 

    Сед внутри командной подстановки, что имя хоста передается только для преобразования IP-адресов, выводимых по имени хоста, в команды sed delete для внешнего sed. Флаг sed's говорит sed, чтобы перезаписать файл, который вы ему даете. Возможно, вы захотите запустить его без этого флага, чтобы убедиться, что результат верен или дать аргумент, который сообщает sed о создании резервной копии входного файла с этим аргументом в качестве суффикса, например -i'~' будет создавать резервную копию называемый host~ . Если ваша версия sed не имеет этого флага, вы можете записать во временный файл и перезаписать оригинал:

     sed "$(hostname -I | sed 's/\([.:[:xdigit:]]\{1,\}\)/\/\1\/d;/g')" ./host > /tmp/newhost && mv /tmp/newhost ./host 

    Я думаю, что это то, что i делаю за кулисами.

    Если вы действительно хотите использовать псевдоним, обратите внимание, что псевдонимы заменяются только текстовыми словами, когда они являются первым командным словом (-ами) в команде, поэтому в вашем исходном примере вам нужно будет использовать подстановку команд, то есть $ (ownip), чтобы дать sed вывод фактического выполнения этого псевдонима. Ваше сообщение об ошибке означает, что sed пытается использовать «ownip» в качестве своего скрипта, и в этом случае он жалуется, потому что sed не имеет команды «o».

    я использую :

     ip a | grep inet | awk '{print $2}' 

    если вы не хотите, чтобы ваш локальный адрес использовал дополнительный grep -v 127 .

    Я бы немного ownip ваш псевдоним, чтобы trim пробелы, а затем использовать собственный псевдоним для создания команды удаления:

     alias ownip='hostname -I | xargs' sed -e "$(ownip | sed -e 's/[.]/[.]/g;s|.*|/&/d;|')" yourhostsfile 
    Interesting Posts

    Awk сравнивает 2 файла, распечатывает совпадение вместе с несоответствующими строками, заполненными 0

    Источник только часть скрипта из другого скрипта?

    объединение n числа файлов с командой cat

    Есть ли способ имитировать событие «Закрыть» в разных окнах с помощью терминала?

    rdesktop: ошибка при загрузке разделяемых библиотек

    сортировать, но держать строку заголовка вверху

    Какова цель команды xargs -I?

    pip install дает «TypeError: объект« int »не является итерируемым»

    Как использовать переменные в подстановке с регулярными выражениями vim

    системный администратор проблемы (например, GNS3 для сетей)

    Как я могу помешать Meta открыть панель запуска KDE Plasma?

    Почему альса звучит поп, треск и вообще слишком искажен, чтобы слушать?

    Интервалы оболочки с использованием awk

    Как выполнить файл без разрешения на выполнение

    "Test -n && echo not empty" печатает "not empty". Это ожидаемое поведение?

    Linux и Unix - лучшая ОС в мире.