我有一个 bash 脚本,它从具有 4 列(无标题)的文本文件中读取行。行数最多为 4 行或更少。每行中的单词由空格字符分隔。
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 解决方案。
- 查找总行数
- 同时
read $line
,将每一行存储在一个变量中 - 将每一行解析为
i=( $line1 )
等j=( $line2 )
- 从每一行获取值 ,如
${i[0]}
、等${i[1]}
${i[2]}
${i[3]}
- 称呼
mailx -s ${i[2]} -t ${i[1]} -r ${i[0]} < ${i[3]}
- 解析下一行并调用
mailx
- 这样做直到没有更多行或达到最多 4 行
awk 或 sed 是否为上述迭代/循环逻辑提供了一个优雅的解决方案?