Bash 从2个文本文件中摘录块并将其传输到另一个实用程序

Bash 从2个文本文件中摘录块并将其传输到另一个实用程序,bash,sed,mailx,Bash,Sed,Mailx,我试图从2个文本文件中摘录一点内容,并使用mailx程序将其作为电子邮件正文发送。我试图以bash脚本的形式来实现这一点,因为我在创建简单bash脚本方面的经验有限,因此我在这方面有基本的知识。也就是说,我并不反对使用其他脚本选项,比如perl/python/等等 我已经到了我想使用sed的地方:sed-e'1、/extract delimiter 1/d'-e'/extract delimiter 2/,$d'file1.txt&&sed-e'1、/extract delimiter one/

我试图从2个文本文件中摘录一点内容,并使用mailx程序将其作为电子邮件正文发送。我试图以bash脚本的形式来实现这一点,因为我在创建简单bash脚本方面的经验有限,因此我在这方面有基本的知识。也就是说,我并不反对使用其他脚本选项,比如perl/python/等等

我已经到了我想使用sed的地方:
sed-e'1、/extract delimiter 1/d'-e'/extract delimiter 2/,$d'file1.txt&&sed-e'1、/extract delimiter one/d'-e'/extract delimiter two/,$d'file2.txt
输出到标准输出我想要进入电子邮件正文的内容。但piping表示,邮件内容不起作用,原因我并不完全清楚。也就是说,
sed-e'1、/extract delimiter 1/d'-e'/extract delimiter 2/,$d'file1.txt&&sed-e'1、/extract delimiter one/d'-e'/extract delimiter two/,$d'file2.txt | mail-s摘录me@mymail.me
不发送电子邮件正文中两个sed命令的输出:它只发送最终sed命令的输出。我试图理解这是为什么,并通过将两个sed命令的输出都输入电子邮件正文来解决问题

进一步的背景。这两个文本文件包含许多行文本,实际上是我使用lynx浏览器得到的网页转储。我只需要这些文件中的几行组成的块,所以我使用sed来划分我需要的块,并允许我从每个文件中删除这几行。如果我试图从一个文件而不是两个文件中删除,我的任务可能会更容易和/或更简单。但是,由于包含我要查找的内容的网页需要输入登录凭据,并且因为我正在尝试自动化此过程,所以我使用lynx的cmd_脚本选项首先登录,然后保存(实际上是打印到文件)我需要的页面。据我所知,lynx没有提供任何连接文件的方法,所以我似乎只能处理两个单独的文件


当然,一定有其他方法来实现我的目标,我不受偏好或必要性的限制,使用任何特定的实用工具。唯一真正的限制是,因为我正在尝试将其自动化,所以它可以作为一个脚本来完成,我可以作为cron作业调用它。我正在使用Linux,拥有所有标准的文本处理工具。很明显,我的脚本知识/能力非常有限,所以我一直在尝试使用一行程序来实现我的目标。mailx已正确配置并在此系统上工作。

管道仅适用于
&&
列表中的第一个命令。您需要将这两个命令组合成一个复合命令,其输出通过管道传输到
mailx

{ sed -e '1,/excerpt delimiter 1/d' \ 
      -e '/excerpt delimiter 2/,$d' file1.txt &&
  sed -e '1,/excerpt delimiter one/d' \
      -e '/excerpt delimiter two/,$d' file2.txt ; } |
 mail -s excerpts me@mymail.me

这可能是他们在bash脚本101中教的东西,但我们这些没有接受过正式培训,只是在尝试完成有限任务的人不会知道。花括号帮我解决了这个问题——谢谢切普纳