gpt4 book ai didi

bash - 从 Bash 中的文件中读取行并将单词解析为 mailx 参数的变量

转载 作者:行者123 更新时间:2023-11-29 09:11:32 25 4
gpt4 key购买 nike

我有一个 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 是否为上述迭代/循环逻辑提供了优雅的解决方案?

最佳答案

试一试:

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可以从一行中读取多个变量,因此我们可以使用命名变量来提高可读性。
  • <<<可能是您想要的重定向,而不是 < .可能吧。

关于bash - 从 Bash 中的文件中读取行并将单词解析为 mailx 参数的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756758/

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