SH SCRIPT для замены IP-адреса из файла с одним сохраненным в текстовом файле

Он посылает SIGKILL процессу (или нескольким с помощью killall).

SIGKILL - Сигнал SIGKILL заставляет процесс немедленно прекратить выполнение. Программа не может игнорировать этот сигнал. Процесс также не может быть очищен.

http://www.linux.org/threads/kill-commands-and-signals.4423/

0
25.10.2018, 15:49
2 ответа
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эта переменная имеет значение нашего под-шелла, который был создан в начале и берет его по флагу -vawk, который в этот момент выведет его значение.

1Считается истинным и, следовательно, эквивалентен печати.

0
28.01.2020, 04:11

Если вы не возражаете против того, чтобы немного растеряться в регулярном выражении 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не нужен.

0
28.01.2020, 04:11

Теги

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