Con awk, file2
que contiene el texto de reemplazo y file1
el texto repetido:
awk 'FNR == NR {baby[NR] = $0; next} /baby/ {count++; $NF = baby[count]} 1' file2 file1
Tenga en cuenta que file2
es el primer argumento del archivo aquí, no file1
.
Explicación:
FNR == NR
es cierto para el primer archivo leído por awk, así que file2
aquí. Para ese archivo, guardamos cada línea en una matriz, indexada por número de línea count
de cada línea que coincida con baby
, y obtenga la entrada de la matriz para ese conteo y reemplace el último campo con esa entrada. Obtengo una salida como:
~ awk 'FNR == NR {baby[NR] = $0; next} /baby/ {count++; $NF = baby[count]} 1' file2 file1
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D1
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D2
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D3
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D4
I love watermelon
I love banana
I love mango
I love papaya
I love guava
I love peaches
I love D5
I love watermelon
замените present.py на более легкое решение. что-то вроде
cat config.txt | while read C; do
C=($C)
nmap -p ${C[1]} ${C[0]} | grep open || mail -s "Warning; port ${C[1]} on server ${C[0]} is unreachable" ${C[2]} < /dev/null &
done;
, на которое ссылается crontab
с конфигурацией вроде
echo -e "127.0.0.1\t22\tme@domain.com" > config.txt
Нет причин использовать какой-либо значительный процессор для проверки порта; это строго операция, ограничивающая ввод-вывод. (вы должны увидеть меньше user
и выше wait
CPU times.)
Этот пример Bash считается тяжелым решением (без повторного использования), если вам нужен действительно легкий код это в c ... ваш питон, вероятно, делает что-то вроде неспособности переработать объекты или какую-то другую ненужную работу, влекущую за собой надзор. Выделение большего количества ресурсов на неэффективный код может сработать, но часто бывает дешевле просто исправить неэффективность. Вы также можете настроить сетевой стек .
Это достаточно высокая средняя загрузка, которая у вас есть, и около 80% общей загруженности ЦП. Занятый пользовательский мир, довольно загруженное ядро и даже какое-то программное обеспечение, которое немного приподнимает голову.
Я действительно надеюсь, что вы выполняете здесь асинхронные сетевые вызовы, это поможет нагрузке, но дело не в программе, а в системе. Я бы сказал, что вам нужно больше процессора, как вы сказали. Также проверьте, сколько потоков у вас есть, как будто их много, и все они требуют процессора, вы можете получить переключение контекста. Иногда меньше тем лучше!