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

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

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

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

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

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

  • Извлечь точное количество элементов из одного и того же идентификатора
  • Как я могу исправить строки, разбитые в неправильных местах?
  • Мне нужно получить номер строки, который имеет наибольшее значение
  • Удаление непечатаемых символов с помощью POSIX sed
  • Использовать аргумент командной строки и переменную с помощью sed Inside Bash Script
  • Цифры с нулевым заполнением до 2 цифр с помощью sed
  • Как заменить несколько пустых строк на определенную непустую строку?
  • Удалите блок строк с условием на последней строке
  • 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

    как определить процесс, который блокирует приостановку / спящий режим

    0 байтов пространства подкачки, рекомендуется 10gb

    Отдельный ярлык для прямого поиска после обратного поиска Ctrl-R

    Что может заставить часы прыгать на 5 минут?

    разделяя команду на одну строку на две части, чтобы она была более «структурирована» эстетически

    Как выполнять поиск регулярных выражений в файле UTF-16LE в локали UTF-8?

    Недостатки umask 077?

    posix размещение перенаправления stdin (<в cmd vs cmd <in)

    Как постоянно добавлять исходный IP-адрес в таблицу маршрутизации в CentOS 5.11

    Как переключиться на bash на DEVISH?

    Есть ли способ перемещаться между двумя потоками RTMP (в зависимости от того, что происходит), используя что-то вроде FFMPEG?

    Как сохранить путь, построенный с помощью подстановочных знаков и содержащий пробелы в переменной

    Ужасный рендеринг шрифтов WM (тонкий)

    Установлен ли Grub для всех MBR массива RAID по умолчанию установщиком Debian?

    Проверка файлов для условных обозначений

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