Как удалить строки, содержащие IP-адрес? [закрыто]

Вы можете взглянуть на эту процедуру для справки.

# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    68 |  <p15119007g>            | 2016-02-27 01:40 | I, U           |   27
    67 |  <a15099004r>            | 2016-02-25 03:05 | Install        |    1
    66 |  <a15099004r>            | 2015-12-28 05:39 | Install        |    1
    65 |  <a15099004r>            | 2015-12-18 03:53 | Update         |    1
    64 |  <a15099004r>            | 2015-12-18 03:53 | Update         |    3 EE

Вы можете получить информацию с помощью этой команды

]# yum history info 67
Loaded plugins: fastestmirror
Transaction ID : 67
Begin time     : Thu Feb 25 03:05:33 2016
Begin rpmdb    : 490:72cf901a0f20ed46ebf4f2a1fbd5b59cde29cd80
End time       :            03:05:38 2016 (5 seconds)
End rpmdb      : 491:fa86b8767c48011cab7b19968339fc95b38f0475
User           :  <a15099004r>
Return-Code    : Success
Command Line   : install mlocate
Transaction performed with:
    Installed     rpm-4.8.0-47.el6.x86_64                       @base
    Installed     yum-3.2.29-69.el6.centos.noarch               @base
    Installed     yum-plugin-fastestmirror-1.1.30-30.el6.noarch @base
Packages Altered:
    Install mlocate-0.22.2-6.el6.x86_64 @base
history info

undo удалит установленный пакет

 # yum history undo 2
4
25.12.2016, 16:25
4 ответа

Но это действительно работает. Правильный ответ, кажется, уже есть в вашем вопросе.

$ cat in.log
http://example.mx
https://test.com
http://4.3.4.4
http://dev.somedomain.com
http://1.3.4.2
$ cat  in.log |  sed  '/^http:\/\/[0-9]/d'  > out.log
$ cat out.log
http://example.mx
https://test.com
http://dev.somedomain.com
$
7
27.01.2020, 20:46

Если вы хотите удалить строки из in.log , вы можете использовать флаг -i для sed :

sed -i '/^http:\/\/[0-9]/d' in.log
2
27.01.2020, 20:46

это уже работает, однако / ^ http: \ / \ / [0-9] / будет соответствовать

http://1.hello.word 

для соответствия "полному IP" используйте / ^ http: \ / \ / [0-9 \.] * $ /

где

    { {1}}
  • [0-9 \.] соответствует цифре и точке ...
  • * ... 0 или более раз ..
  • $ ... до конца строки.
2
27.01.2020, 20:46

Похоже, вы хотите удалить строки во входных данных.В дополнение к sed есть очень простое решение, использующее grep -v :

grep -v 'http://\([0-9]\+\.\)\{3\}[0-9]\+' in.log

Кроме того, здесь нет необходимости в cat и трубе в любом случае: кот фу | bar можно заменить на bar в целом, и в этом конкретном случае вы можете просто передать имя файла в качестве аргумента либо grep , либо sed ] без трубы.

Пуристы Shell обычно неодобрительно относятся к такому использованию cat , потому что это необоснованно запускает отдельный процесс (и потому что цель cat - обмануть cat enate файлы…).

3
27.01.2020, 20:46

Теги

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