我的文本文件中有这一行:
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
)?
答案 0 :(得分:0)
当然,sed
可以找到您需要的行并对其进行修改:
$ sed '/evasive20/ s/\[pid [0-9]*\] //' <your-file.log