我有一个包含特殊格式字符串的巨大文本文件。如何快速创建另一个只包含与我的条件相对应的字符串的文件?
例如,文件内容:
[2/Nov/2015][rule="myRule"]"GET
http://uselesssotialnetwork.com/picturewithcat.jpg"
[2/Nov/2015][rule="mySecondRule"]"GET
http://anotheruselesssotialnetwork.com/picturewithdog.jpg"
[2/Nov/2015][rule="myRule"]"GET
http://uselesssotialnetwork.com/picturewithzombie.jpg"
我只需要#34; myRule"和"猫"? 我认为它应该是perl或bash,但它并不重要。 非常感谢,抱歉没有问题。
答案 0 :(得分:1)
是否正确,每个条目长两行?然后,您可以使用sed
:
sed -n '/myRule/ {N }; /myRule.*cat/ {p}'
myRule
匹配myRule
后跟cat
,如果发现它打印模式空间答案 1 :(得分:1)
如果你的文件真的很大,以至于它不适合内存(尽管在现代计算机系统中文件高达几千兆字节),那么唯一的方法是更改记录分隔符或者读成对的行
这显示了第一种方式,并假设每对的第二行以双引号后跟换行结束
perl -ne'BEGIN{$/ = qq{"\n}} print if /myRule/ and /cat/' huge_file.txt
这是第二次
perl -ne'$_ .= <>; print if /myRule/ and /cat/' huge_file.txt
当您将样本数据作为输入时,两种方法都会产生此输出
[2/Nov/2015][rule="myRule"]"GET
http://uselesssotialnetwork.com/picturewithcat.jpg"