【问题标题】:Filter specifik patern in a complex file过滤复杂文件中的特定模式
【发布时间】:2019-05-28 10:40:06
【问题描述】:

我有这个日志文件,我试图避免打印包含模式“APLHA”的文本。

   +++ skdfhahjsahsdjk >
** ALPHA EDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

 +++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

我尝试过这种方式但没有成功。它会打印除“ALPHA”之外的其余文本

cat 日志文件 |grep -v "ALPHA"
结果:

+++ skdfhahjsahsdjk >
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

我期望的是不打印包含“ALPHA”的整个日志,如下所示:

 +++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

 +++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

您能否就本案的其他解决方案提出建议?

问候多姆

【问题讨论】:

  • 当我运行你的命令cat logfile |grep -v "ALPHA",实际上也可以写成grep -v "ALPHA" Input_file,对我来说工作正常。您能否检查一下您的 Input_file 中是否有控制 M 个字符?通过cat -v Input_file 然后让我们知道?
  • 我尝试了你的建议,"grep -v "ALPHA" Input_file " 和输出 si 和以前一样。关于 cat -v 命令,我没有发现任何控制 M 字符存在。
  • @Dominik ,如果此处提供的解决方案对您有帮助,那么您还应该通过投票来感谢答案。您只能接受一个答案,但可以欣赏所有答案。

标签: grep uniq


【解决方案1】:

试一试:

awk 'BEGIN{RS=ORS="\n\n"}!/ALPHA/' file

【讨论】:

  • @Dominik 在 SO 您接受解决您问题的答案。否则,没有人会再帮助你了。检查您的问题历史记录,并接受答案。
  • 我没有意识到如何接受答案,这就是我没有点击“接受答案”的原因。现在我找到了,谢谢你:)
【解决方案2】:

使用perl's slurp 模式的替代解决方案(-00 启用)。这将告诉perl 考虑段落是一个记录而不是行。后来很清楚,仅当ALPHA 不存在时才打印。

perl -00 -ne  'print if  !/ALPHA/' inputfile
   +++ skdfhahjsahsdjk >
* KJENRFKES DFJKLSDFJEDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
CL mesukww juwaehdiearfa
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

   +++ skdfhahjsahsdjk >
*C KJENRFKESDFJ ksludhieokdaewmdp
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

 +++ skdfhahjsahsdjk >
** BETA EDFJDJFKLJDKFJKSDLFJL
   SDFSDGDRGRTG
   WEFETTFYRT #168113++-

【讨论】:

  • 感谢您的解决方案!是的,你的建议似乎也很好,我很感激:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2021-08-08
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多