Есть файл вида:
* Name : TDK_Torg002
LastMsg : 0
ToHost :
Addr->IP : 83.111.42.123 Port 5061
Defaddr->IP : 0.0.0.0 Port 5060
Useragent : MP202 B 2FXS/3.0.0_build_13
Reg. Contact : sip:TDK_Torg002@192.168.2.26:5061
и т.д всего около 40000 строк. Как можно удалить все, кроме строк, которые содержат *Name :, CallerID и Addr->IP во всех записях, и чтобы они форматировались в вид *Name : .... Callerid: ..... Addr->IP: ...........
Удаление строк из файла
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 18
- ОС: Debian
Re: Удаление строк из файла
И так!
Вот что получилось:
awk -F: '/* Name/ {print $1,$2} /Callerid/ {print $1,$2} /Addr->IP/ {print $1,$2}' file > newfile
Теперь имеется вот такой вот вид файла:
Name SibTerra03
Callerid "8xxxxx5" <83xxxxx65>
Addr->IP 217.74.169.120
Name SibTerra02
Callerid "83xxxx2" <83xxxxx92>
Addr->IP 217.74.169.120
Name SibTerra01
Callerid "8xxxxx3" <8xxxxxx3>
Addr->IP 217.74.169.120
и т.д.
Как можно сделать, чтобы каждые первые три строки файла формировались в одну через пробел?
Вот что получилось:
awk -F: '/* Name/ {print $1,$2} /Callerid/ {print $1,$2} /Addr->IP/ {print $1,$2}' file > newfile
Теперь имеется вот такой вот вид файла:
Name SibTerra03
Callerid "8xxxxx5" <83xxxxx65>
Addr->IP 217.74.169.120
Name SibTerra02
Callerid "83xxxx2" <83xxxxx92>
Addr->IP 217.74.169.120
Name SibTerra01
Callerid "8xxxxx3" <8xxxxxx3>
Addr->IP 217.74.169.120
и т.д.
Как можно сделать, чтобы каждые первые три строки файла формировались в одну через пробел?
-
- Сообщения: 18
- ОС: Debian
Re: Удаление строк из файла
Все разобрался, только теперь я сделал так, разбил на блоки.
sed 'n;n;G;' newfile > newfile2 , получается так
* Name krastsavs103
Callerid "83910000303" <83910000303>
Addr->IP 217.117.177.129 Port 33288
* Name krastsavs102
Callerid "83910000302" <83910000302>
Addr->IP (Unspecified) Port 0
а теперь мне нужно было осуществить поиск по выражению, и если оно совпадает с ip адресом, то печатать целый блок. Это делается с помощью этого скрипта.
sed 'n;n;G;' newfile > newfile2 , получается так
* Name krastsavs103
Callerid "83910000303" <83910000303>
Addr->IP 217.117.177.129 Port 33288
* Name krastsavs102
Callerid "83910000302" <83910000302>
Addr->IP (Unspecified) Port 0
а теперь мне нужно было осуществить поиск по выражению, и если оно совпадает с ip адресом, то печатать целый блок. Это делается с помощью этого скрипта.
Код: Выделить всё
#!/bin/bash
list=/home/skynet/file
ip="217.117.177 здесь много адресов сети около 300 штук через пробел"
for ipaddr in $ip
do
sed -e '/./{H;$!d;}' -e 'x;/'$ipaddr'/!d;' $list
done
-
- Сообщения: 18
- ОС: Debian
Re: Удаление строк из файла
Помогите мне пожалуйста.
Как сделать чтобы вот такой вот текст:
terneftegaz001
"8xxxx745435"
83.145.147.205
sibcet07
"8xxxx050588"
83.135.159.186
sibcet06
"8xxxx050577"
83.115.159.186
.....
.....
.....
стал таким
terneftegaz001, "8xxxx745435", 83.145.147.205
sibcet07, "8xxxx050588", 83.135.159.186
Как сделать чтобы вот такой вот текст:
terneftegaz001
"8xxxx745435"
83.145.147.205
sibcet07
"8xxxx050588"
83.135.159.186
sibcet06
"8xxxx050577"
83.115.159.186
.....
.....
.....
стал таким
terneftegaz001, "8xxxx745435", 83.145.147.205
sibcet07, "8xxxx050588", 83.135.159.186
-
- Сообщения: 2223
- Статус: Не очень злой админ :-)
- ОС: SuSE, CentOS, FreeBSD, Windows
Re: Удаление строк из файла
...
$ cat file
terneftegaz001
"8xxxx745435"
83.145.147.205
sibcet07
"8xxxx050588"
83.135.159.186
sibcet06
"8xxxx050577"
83.115.159.186
$ sed 's/^[A-Za-z]/\^&/' file | tr "\n" "$" | sed 's/\(\$\^\|\$$\)/\n/g; s/^\^//; s/\$/, /g'
terneftegaz001, "8xxxx745435", 83.145.147.205
sibcet07, "8xxxx050588", 83.135.159.186
sibcet06, "8xxxx050577", 83.115.159.186
Прошу прощения, djo, вы случаем не в "Мобилоне" работаете? :)
Спасибо сказали:
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Удаление строк из файла
djo
ппц
а вы в контрразведке. Карты для врагов делаете.
ппц
$
$ echo "terneftegaz001
"8xxxx745435"
83.145.147.205
sibcet07
"8xxxx050588"
83.135.159.186
sibcet06
"8xxxx050577"
83.115.159.186
.....
.....
....." | sed 'N;N;s/\n/ /g'
terneftegaz001 8xxxx745435 83.145.147.205
sibcet07 8xxxx050588 83.135.159.186
sibcet06 8xxxx050577 83.115.159.186
..... ..... .....
а вы в контрразведке. Карты для врагов делаете.
Спасибо сказали: