Sed 来自日志的Grep特定文本

Sed 来自日志的Grep特定文本,sed,grep,Sed,Grep,我试图弄明白,如何在linux中只使用下面日志中的SIG:hash部分进行grep: 20120927:10:57:23|89252871|3342|ESP individual score details for Message ID: <esp:msgid> -|<RBL:<0> SHA:<0> SHA_FLAGS:<0> UHA:<12> ISC:<0> BAYES:<0> SenderI

我试图弄明白,如何在linux中只使用下面日志中的SIG:hash部分进行grep:

20120927:10:57:23|89252871|3342|ESP individual score details for Message ID: <esp:msgid> -|<RBL:<0>  SHA:<0>  SHA_FLAGS:<0>  UHA:<12>  ISC:<0>  BAYES:<0>  SenderID:<0>  DKIM:<0>  TS:<-1>  SIG:<309875857436-4372-986476-327698-7436-984376-43276-98437643-8276-84327-6743-6874-986-86743-86732-867432-687432-687>  DSC:<0>  ('TRU_spam1', 47):<0> ('TRU_legal_spam', 31):<0> ('TRU_marketing_spam', 34):<0> ('TRU_profanity_spam', 39):<0> ('TRU_medical_spam', 35):<0> ('TRU_playsites', 46):<0> ('TRU_money_spam', 37):<0> ('TRU_stock_spam', 41):<0> ('TRU_embedded_image_spam', 27):<0> ('TRU_urllinks', 49):<0> ('TRU_watch_spam', 42):<0> ('TRU_phish_spam', 38):<0> ('TRU_spam2', 48):<0> ('TRU_misc_spam', 36):<0> ('TRU_LOREAL', 55):<0> ('TRU_freehosting', 45):<0> ('TRU_lotto_spam', 32):<0> ('TRU_ru_spamsubj', 56):<0> ('TRU_adult_spam', 18):<0> ('URL Real-Time Signatures', 9):<0> ('TRU_scam_spam', 40):<0>:89252871>|
可能对你有用

可能对你有用

grep一个人在这里帮不了你多少忙。您可以将剪切添加到工具箱中:

grep -o 'SIG:<[^>]\+' | cut -f2 -d\<
首先,选择SIG和它后面的所有内容,直到>为止。那么,仅返回第一次grep之后的内容在这里对您没有多大帮助。您可以将剪切添加到工具箱中:

grep -o 'SIG:<[^>]\+' | cut -f2 -d\<

首先,选择SIG和它后面的所有内容,直到>为止。然后,只返回在GNU grep上使用Perl正则表达式的第一个之后的内容:

grep -oP '(?<=SIG:<)[^>]*(?=>)'

使用Perl正则表达式在GNU grep上工作:

grep -oP '(?<=SIG:<)[^>]*(?=>)'

使用两个grep,一个用于抓取右侧字段,另一个用于清理:

<infile grep -o 'SIG:<[^>]*' | grep -o '[^<]*$'

使用两个grep,一个用于抓取右侧字段,另一个用于清理:

<infile grep -o 'SIG:<[^>]*' | grep -o '[^<]*$'

当我使用that和SIG have spaces时,此命令只将信息打印到第一个空格,然后中断。当我使用that和SIG have spaces时,此命令只将信息打印到第一个空格,然后中断。在我的第一次尝试中,我使用了类似的代码,但没有成功,此代码不起作用。Zsolt,我想你有一个输入错误:有两个结束>s。我认为您需要删除括号内的代码。在我的第一次尝试中,我使用了类似的代码,但没有成功,这段代码不起作用,只需打印全部信息。Zsolt,我发现您有一个输入错误:有两个结束>s。我认为您需要删除括号内的那一行。是否可以在每个结果之后插入新行?是的,我找到了解决方案:grep-oP'?'| sed-es/^.$/&1\n/@KalinBorisov或者您可以在每个结果之后插入新行。请注意,您可以这样做。是否可以在每个结果之后插入新行,我找到了解决方案:grep-oP'?'| sed-es/^.$/&1\n/@KalinBorisov或者你可以做| sed'I\'@KalinBorisov注意,你可以。