Shell脚本,从特定点开始搜索模式,直到文件结束

Shell脚本,从特定点开始搜索模式,直到文件结束,shell,Shell,我只是想知道你是否能在这里帮忙 我有以下日志文件: qi3adm 20130701095302 : QI3/SYS/exe/uc/sunx86_64/tp import all QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS qi3adm 20130701144746 : QI3/SYS/exe/uc/sunx86_64/tp import

我只是想知道你是否能在这里帮忙

我有以下日志文件:

 qi3adm       20130701095302    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS

 qi3adm       20130701144746    : QI3/SYS/exe/uc/sunx86_64/tp import all
  qi3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS

 qi3adm       20130701145155    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS

 qi3adm       20130701164041    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS

 qi3adm       20130701205821    : QI3/SYS/exe/uc/sunx86_64/tp import all
 QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS

 qi3adm       20130702034725    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS
我的要求是,我只需要在日志文件中的第三个条目之后开始搜索,即从

 qi3adm       20130701145155    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS
 qi3adm       20130701164041    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS
此日志文件在上述记录之前基本上有数千条记录。我可以使用grep提取上述记录。在此之后,我只需要从下一条记录开始搜索,即从

 qi3adm       20130701145155    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS
 qi3adm       20130701164041    : QI3/SYS/exe/uc/sunx86_64/tp import all
  QI3 u6 -Dsourcesystems=HRI,MP1,BFI,EBI,EBJ,EEI,EFI,EGI,EHI,EIA,EIC,EII,EIK,EIS
并继续搜索,直到文件结束。(需要显示点击次数)。我在网上做一些搜索,并尝试使用以下方法:

sed -e '/$TIMESTAMP/,$p' LOGFILE
[$TIMESTAMP保留2013年]。但是,上面给出的输出并不正确。我遇到的主要问题是搜索只需要在记录3之后开始,而不是从日志文件的开头开始

你能帮忙吗?非常感谢你的帮助

致以最良好的祝愿, 带awk的Sri

awk '/qi3adm       20130701164041/,0' logfile
使用
sed

sed '/qi3adm       20130701164041/,$!d' logfile 

基本上,你在开始范围内传递一个表达式,它将从那里开始直到文件结束。

如果你知道要捕获哪个时间戳,你可以将它缩短为
awk'/20130701164041/,0'logfile
。你好,JS,非常感谢你的及时回复。这成功了!我还想知道是否可以在上面的表达式中指定多个模式。我试过这样的方法:awk'/'$TIMESTAMP'&&qi3adm&&import/,0'。因此,基本上需要检查这些附加模式,如果它们存在,则需要显示该行。再次感谢您的帮助-SriYou当然可以提供多种模式,但不是这样。这里有一个很好的方法让你开始定制模式如果你的要求是从第三行开始搜索,
sed-n'3,$/pattern/p'日志文件
@tripleee是的,那也是我的选择,但是这一行这个日志文件在上面的记录之前基本上有数千条记录。在OP的问题中,我建议使用正则表达式而不是行号。