用于在特定行,时间戳之间进行字符串搜索的Shell脚本

时间:2016-10-14 01:02:38

标签: shell unix sed grep

我有一个超过10000行的文件。我试图在两个时间戳之间的特定行集之间搜索字符串。

我正在使用sed命令来实现这一目标。

sed -n' 1,4133p'文件名| sed -n' /' 2015-08-12' /,/' 2015-09-12' / p'文件名| grep -i" string"

通过上述命令,我得到了理想的结果。上面的命令正在考虑整个文件而不是我指定的行。

有没有办法实现这个目标?。

请帮忙

2 个答案:

答案 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/