我想从大小约为25GB的大文件中获取数据。我正在使用SED命令来获取数据但不知何故它没有给我正确的输出。以下是文件的格式:
PID=382 00:00:01 PID=382 Received 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb (10.120.174.110)
PID=382 00:00:01 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST' from client (10.120.174.110)
PID=382 00:00:02 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST' from client (10.120.174.110)
PID=382 00:00:02 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST' from client (10.120.174.110)
PID=4847 00:00:03 PID=4847 Returned 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST' fro.10.120.174.110)
PID=382 00:00:04 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:04 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:04 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:05 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:05 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:06 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:06 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=389 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=385 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=382 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=382 00:00:07 PID=384 Received 'TESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTESTTEST
PID=4847 00:00:08 PID=4847 Received '<>'
PID=4848 01:00:00 PID=4848 Received '<>'
PID=4847 01:00:00 PID=4847 Received '<>'
现在我试图从sed命令获取00:00:02到01:00:00之间的数据,它正在跳过几行
sed -rne '/00:00:02/,/01:00:00/ p' filename
答案 0 :(得分:0)
考虑修改后的输入样本
$ cat ip.txt
begin
begin
1234
6789
end
end
end
bar
end
0-42-1
begin
b
end
begin
a
OP中提到的sed
解决方案不匹配多个结束正则表达式,如果没有匹配结束正则表达式,则匹配到文件末尾
$ sed -n '/begin/,/end/p' ip.txt
begin
begin
1234
6789
end
begin
b
end
begin
a
处理此问题的一种方法是使用缓冲区(我更喜欢使用awk / perl)
$ awk ' ef && !/end/{if(buf) print buf; buf=""; ef=bf=0}
!bf && /begin/{bf=1; buf=$0; next}
bf{buf=buf ORS $0}
/end/{ef=1}
END{if(ef && buf) print buf}
' ip.txt
begin
begin
1234
6789
end
end
end
begin
b
end