加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从Bash中的File中读取行并将单词解析为mailx参数的变量

发布时间:2020-12-15 21:30:32 所属栏目:安全 来源:网络整理
导读:我有一个bash脚本,它从一个包含4列(无标题)的文本文件中读取行.行数最多可为4行或更少.每行中的单词由SPACE字符分隔. ab@from.com xyz@to.com;abc@to.com Sub1 MailBody1xv@from.com abc@to.com;poy@to.com Sub2 MailBody2mb@from.com gmc@to.com;abc@to.com
我有一个bash脚本,它从一个包含4列(无标题)的文本文件中读取行.行数最多可为4行或更少.每行中的单词由SPACE字符分隔.

ab@from.com   xyz@to.com;abc@to.com   Sub1   MailBody1
xv@from.com   abc@to.com;poy@to.com   Sub2   MailBody2
mb@from.com   gmc@to.com;abc@to.com   Sub3   MailBody3
yt@from.com   gqw@to.com;xyz@to.com   Sub4   MailBody4

目前,我正在解析文件,在获取每一行之后,我将每行中的每个单词存储到变量中并将mailx调用四次.想知道是否有一个优雅的awk / sed解决方案,以下提到的逻辑.

>找到总行数
>读取$line时,将每一行存储在一个变量中
>将每一行解析为i =($line1),j =($line2)等
>从每一行获取值{$[i [0]},${i [1]},${i [2]}和${i [3]}等
> call mailx -s ${i [2]} -t ${i [1]} -r ${i [0]}< ${I [3]}
>解析下一行并调用mailx
>执行此操作直到不再有行或最多4行

awk或sed是否为上面的迭代/循环逻辑提供了一个优雅的解决方案?

解决方法

试一试:

head -n 4 mail.txt | while read from to subject body; do
    mailx -s "$subject" -t "$to" -r "$from" <<< "$body"
done

> head -n 4从文本文件中读取最多四行.> read可以从一行读取多个变量,因此我们可以使用命名变量来提高可读性.><<<可能是你想要的重定向,而不是<.大概.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读