正则表达式为grep命令为linux

时间:2016-03-01 15:56:31

标签: linux

我的文本文件中有这一行:

class server
{
public:
    server(boost::asio::io_service& io_service, short port)
        : acceptor_(io_service, tcp::endpoint(tcp::v4(), port)),
        socket_(io_service), call_nr(0)
    {
        do_accept();
    }

private:
    void do_accept()
    {
        acceptor_.async_accept(socket_,
            [this](boost::system::error_code ec) // lambda equation
        {
            using namespace std;
            cout << "Call nr " << (++call_nr) << endl;
            if (!ec)
            {
                std::make_shared<session>(std::move(socket_))->start();
            }

            do_accept();
        });
    }

    int call_nr;
    tcp::acceptor acceptor_;
    tcp::socket socket_;
};

我用命令

来grep这句话
[Tue Mar 01 21:28:58.377941 2016] [evasive20:error] [pid 5098] [client 192.168.163.1:3978] client denied by server configuration: /var/www/html/test.php 

在结果中,显示整个句子。但我想输出包含“evasive20”的行并删除其中的grep "evasive20" 部分,以便显示的结果为:

[pid 5098]

这可能在一个命令中吗?或者有没有办法让我为句子的前部和最后部分(没有[Tue Mar 01 21:28:58.377941 2016] [evasive20:error] [client 192.168.163.1:3978] client denied by server configuration: /var/www/html/test.php )?

1 个答案:

答案 0 :(得分:0)

当然,sed可以找到您需要的行并对其进行修改:

$ sed '/evasive20/ s/\[pid [0-9]*\] //' <your-file.log