Он посылает SIGKILL процессу (или нескольким с помощью killall).
SIGKILL - Сигнал SIGKILL заставляет процесс немедленно прекратить выполнение. Программа не может игнорировать этот сигнал. Процесс также не может быть очищен.
http://www.linux.org/threads/kill-commands-and-signals.4423/
s=$(cat ip.txt)
awk -v s="$s" '{gsub(/100.70.[0-9].{1,3}.[0-9]/, s)}1' file.txt
s=$(cat ip.txt)
в этой переменной я храню вывод под-оболочки
-v s="$s"
здесь -v
получает переменную оболочки как локальную, так и глобальную. в данном случае и местный.
gsub
означает глобальную замену. Он заменяет каждое вхождение
/100.70.[0-9].{1,3}.[0-9]/
aki регулярное выражение для соответствия всем ip100.70. *
, s
эта переменная имеет значение нашего под-шелла, который был создан в начале и берет его по флагу -v
awk
, который в этот момент выведет его значение.
1
Считается истинным и, следовательно, эквивалентен печати.
Если вы не возражаете против того, чтобы немного растеряться в регулярном выражении IP-адреса, вы можете использоватьsed
:
sed "s/100\.70\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(<ip.txt)/g" < file1 > output
или с sed
, который поддерживает-i
:
sed -i "s/100\.70\.[0-9]\{1,3\}\.[0-9]\{1,3\}/$(<ip.txt)/g" file1
Регулярное выражение для сопоставления адресов «100.70.x.x» будет соответствовать действительным IP-адресам, а также недействительным, таким как :100.70.900.678
, поскольку [0-9]\{1,3\}
просто говорит, что соответствует от одной до трех цифр.
Замена текста выполняется в двойных -кавычках с помощью специальной подстановки команд ($(< filename)
), которая просто считывает содержимое файла ip.txt
.
Флаг g
указывает sed заменить все соответствующие экземпляры в каждой строке. Если у вас будет только один IP-адрес в строке, флаг g
не нужен.