我有一个超过10000行的文件。我试图在两个时间戳之间的特定行集之间搜索字符串。
我正在使用sed命令来实现这一目标。
sed -n' 1,4133p'文件名| sed -n' /' 2015-08-12' /,/' 2015-09-12' / p'文件名| grep -i" string"
通过上述命令,我得到了理想的结果。上面的命令正在考虑整个文件而不是我指定的行。
有没有办法实现这个目标?。
请帮忙
答案 0 :(得分:1)
我认为问题在于:
sed -n '1,4133p' filename | sed -n '/'2015-08-12'/, /'2015-09-12'/p' filename |
^^^
您希望将第一个sed
命令的输出传输到第二个命令。你有这种方式,第一个输出被破坏,并替换为重新扫描文件。
试试这个:
sed -n '1,4133p' filename | sed -n '/'2015-08-12'/, /'2015-09-12'/p' | grep -i "string"
答案 1 :(得分:1)
任何时候你发现自己将seds和greps管道连在一起停止并只使用1 awk命令:
awk -v IGNORECASE=1 '/2015-08-12/{f=1} f&&/string/; /2015-09-12/||(NR==4133){exit}' file
以上使用IGNORECASE
的GNU awk,其他问题只是将/string/
更改为tolower($0)~/string/
。