LINUX.ORG.RU

Как удалить лишние строки


0

0

Есть файл логов iptables (file.txt) в виде

12:00:00 192.168.0.1 234821
12:00:00 192.168.0.2 4821
12:00:00 192.168.0.3 2321
12:00:00 192.168.0.4 221
12:00:00 192.168.0.5 421
12:00:00 192.168.0.6 34821
12:00:00 192.168.0.7 0
12:00:00 192.168.0.8 233421
12:00:00 192.168.0.9 3234821
...
12:00:00 192.168.0.254 3234821


делаю cat file.txt | grep 192.168.0.2

и соответственно получаю несколько лишних строчек для ip 2, 21, 22, 23 ... и тд

как через bash, awk или sed убрать лишние строки ?



anonymous
Ответ на: комментарий от anonymous

Должно, вообще-то. Единственное приходящее в голову объяснение - там живет табуляция. Попробуй посмотреть на

cat твой_файл | head -1 | od -a

anonymous
()
Ответ на: комментарий от Die-Hard

так тоже не выводит ничего
и так
cat file.txt | grep '192.168.0.2 '
тоже не выводит ;(

anonymous
()
Ответ на: комментарий от Die-Hard

да увидел я пробел, увидел, файлы получаются из статистики iptables, делал я ее так

#!/bin/bash

HOUR=`date +%H`
DAT=`date -R`
NULL=0

# eth1
test -d /var/log/trafic/eth1/$(date -I) || mkdir /var/log/trafic/eth1/$(date -I)
cd /var/log/trafic/eth1/$(date -I)

i=1
while [ $i -le 254 ]
do
RX=`/usr/sbin/iptables -L FORWARD -v -x | grep chain_$i | head -c 18 | tail -c 9`
if [ $RX -ne $NULL ]
then
echo "$DAT 192.168.0.$i $RX" >> users_${HOUR}.xls
fi
i=`expr $i + 1 `
done
echo >> users_${HOUR}.xls

FT=`/usr/sbin/iptables -L FORWARD -v -x | grep fwd_in_traf | head -c 18 | tail -c 9`
echo "$DAT eth1 $FT" >> full_eth1.xls

# eth2
test -d /var/log/trafic/eth2/$(date -I) || mkdir /var/log/trafic/eth2/$(date -I)
cd /var/log/trafic/eth2/$(date -I)

i=1
while [ $i -le 6 ]
do
RX=`/usr/sbin/iptables -L FORWARD -v -x | grep chain_asm_$i | head -c 18 | tail -c 9`

if [ $RX -ne $NULL ]
then
echo "$DAT 172.17.0.$i $RX" >> users_${HOUR}.xls
fi
i=`expr $i + 1 `
done
echo >> users_${HOUR}.xls

FT=`/usr/sbin/iptables -L FORWARD -v -x | grep fwd_asm | head -c 18 | tail -c 9`
echo "$DAT eth2 $FT" >> full_eth2.xls


#===============================#
/usr/sbin/iptables -Z
#===============================#

anonymous
()
Ответ на: комментарий от anonymous

там короче статистика кидается в файлы xls, и каждый час через cron запускается, обнуляя после снятия статистики счетчик (то есть в день по 24 файла) , и вот месяц прошел - за месяц общую цифру то я посчитал, а для каждого ip - шляпа, а мне надо отчеты по трафику начальнику сдавать ...

anonymous
()

Т.е при grep'e должна выводиться только одна строка 192.168.0.2?
если да, то

grep -x 192.168.0.2 file.txt

IPFreely ★★
()
Ответ на: комментарий от anonymous

Есть еще возможность указать границу слова '192.168.0.2\>' или '192.168.0.2\b'.

amm ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.