Простой BASH - как читать файл по строкам

Вы можете найти его здесь

/sys/class/net

PS: Я этого не проверял. Получите эту информацию из help.ubuntu.com

Вы также можете попробовать отредактировать этот файл

/etc/NetworkManager/NetworkManager.conf 

Также попробуйте проверить это help.ubuntu.com [ ! d4]

0
задан 1 March 2018 в 03:46

3 ответа

Я бы рекомендовал начать следующим образом:

#!/bin/bash
file="/home/foo/documents/iptxt"

while read num addr ; do 
    if [[ "$num" && "$addr" ]] ; then 
        echo "$addr has tried to log in $num times" 
    fi
done < "$file"

Таким образом, read сохраняет первое слово каждой строки в $num, а остальную часть строки в $addr, которая должен быть только IP-адрес. Затем внутри цикла while мы проверяем, не являются ли оба из них пустыми, и если это так, напечатайте сообщение.

4
ответ дан 22 May 2018 в 12:50
  • 1
    Спасибо огромное! Это именно то, что мне нужно. – DivZ 1 March 2018 в 04:20
  • 2
    И вы можете установить переменную internal field separator для значений, разделенных запятыми (IFS=","). – Pablo Bianchi 1 March 2018 в 07:45
  • 3
    Что случилось с $char1 -gt 3 из вопроса ( Цель - заблокировать этот IP-адрес с помощью netfilter, если попытка больше 3. )? Кроме того, добавление по крайней мере || [[ -n "$num" ]] кажется хорошей идеей, чтобы охватить случай последней строки, не заканчивающейся в новой строке. – dessert 1 March 2018 в 10:28

Я бы рекомендовал начать следующим образом:

#!/bin/bash file="/home/foo/documents/iptxt" while read num addr ; do if [[ "$num" && "$addr" ]] ; then echo "$addr has tried to log in $num times" fi done < "$file"

Таким образом, read сохраняет первое слово каждой строки в $num, а остальную часть строки в $addr, которая должен быть только IP-адрес. Затем внутри цикла while мы проверяем, не являются ли оба из них пустыми, и если это так, напечатайте сообщение.

4
ответ дан 17 July 2018 в 19:47

Я бы рекомендовал начать следующим образом:

#!/bin/bash file="/home/foo/documents/iptxt" while read num addr ; do if [[ "$num" && "$addr" ]] ; then echo "$addr has tried to log in $num times" fi done < "$file"

Таким образом, read сохраняет первое слово каждой строки в $num, а остальную часть строки в $addr, которая должен быть только IP-адрес. Затем внутри цикла while мы проверяем, не являются ли оба из них пустыми, и если это так, напечатайте сообщение.

4
ответ дан 23 July 2018 в 20:32

Другие вопросы по тегам:

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