gpt4 book ai didi

linux - 搜索和存储文件的特定部分

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:48 25 4
gpt4 key购买 nike

我在搜索文件的特定部分并将其存储到 bash shell 中的变量时遇到问题。

这是我的文件示例之一:

From root@machine2.com  Mon Jan  7 16:56:50 2013
Return-Path: <root@machine2.com>
X-Original-To: smsto+9121403571@machine2.com
Delivered-To: smsto+9121403571@machine2.com
Received: by machine2.com (Postfix, from userid 0)
id 43C191A1ECE; Mon, 7 Jan 2013 16:56:50 +0330 (IRST)
Date: Mon, 07 Jan 2013 16:56:50 +0330
To: smsto+9121403571@machine2.com
Subject: =?us-ascii?Q?Testing\=08?=
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20130107132650.43C191A1ECE@machine2.com>
From: root@machine2.com (root)

My note ..
blah blah ...

我需要做的是将其中一些字段存储到变量中(参数如 FROM、SUBJECT 和 EMAIL BODY)

对于 FROM 和 SUBJECT 字段,搜索和获取数据很容易。但是对于 EMAIL BODY,如您所见,没有任何标签可以搜索它……所以我在想获取电子邮件正文的一种可能方法是搜索 FROM 标签,然后使用其行号从中获取 EMAIL BODY文件末尾的下一行。

不幸的是,我不太熟悉 linux 命令来做这样的事情。

请帮帮我。

最佳答案

可以使用sed从空行打印到文件末尾:

$ sed -n '/^\s*$/,$p' file

My note ..
blah blah ...

# Command substitution to store into a variable
$ body=$(sed -n '/^\s*$/,$p' file)

$ echo $body
My note .. blah blah ...

# Remember to quote variables to respect newlines
$ echo "$body"

My note ..
blah blah ...

如果您不想包含第一个空行,请使用:

$ sed -n '/^\s*$/,$ {/^.*[^ ]\+.*/,$p}' file

或者去掉正文中的所有空行:

$ sed -n '/^\s*$/,$ {/^.*[^ ]\+.*/p}' file

关于linux - 搜索和存储文件的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com