Bash 如何使用其他文件中的文本命名文件?

Bash 如何使用其他文件中的文本命名文件?,bash,awk,sed,Bash,Awk,Sed,我有一个文件,每一行都包含一个新的客户信息电子邮件、姓名、标题、账单,这些信息将被替换为模板文件,以便为账单超过其付款额的客户创建一个文件。我的问题是在哪里?????位于。我想使用客户的电子邮件将输出重定向到一个名为的文件名,到目前为止我还无法做到这一点。我不知道该怎么做,我尝试了很多方法,但都没有成功 1 #!/bin/bash 2 set -e 3 4 if [ "$#" -ne 1 ]; then 5 echo "Illegal number of parame

我有一个文件,每一行都包含一个新的客户信息电子邮件、姓名、标题、账单,这些信息将被替换为模板文件,以便为账单超过其付款额的客户创建一个文件。我的问题是在哪里?????位于。我想使用客户的电子邮件将输出重定向到一个名为的文件名,到目前为止我还无法做到这一点。我不知道该怎么做,我尝试了很多方法,但都没有成功

  1 #!/bin/bash
  2 set -e
  3
  4 if [ "$#" -ne 1 ]; then
  5     echo "Illegal number of parameters. Usage;./test1.bash <mm/dd/yyyy>"
  6     exit 1
  7 fi
  8
  9 OUTPUT_DIR="Emails"
 10 details="p4Customer.txt"
 11 template="template.txt"
 12 date=$1
 13 if [ ! -d "$OUTPUT_DIR" ]; then
 14     mkdir -p "$OUTPUT_DIR"
 15 fi
 16
 17 gawk -f g2.awk -v date="$date" "$details" | while read detail;
 18 do
 19     sed "$detail" "$template" > "OUTPUT_DIR/??????"
 20 done;

您可以尝试在第17行的gawk命令周围放置另一个循环,并使用cut命令,该命令将为您提供$details文件中的第一个字段。因此,bash脚本中的第17-20行将替换为:

# assume the first field is the email
for email in `cut -d, -f 1 $details`;
  do
  gawk -f g2.awk -v date="$date" "$details" | while read detail;
  do
    sed "$detail" "$template" > "OUTPUT_DIR/$email"
  done;
done;
# assume the first field is the email
for email in `cut -d, -f 1 $details`;
  do
  gawk -f g2.awk -v date="$date" "$details" | while read detail;
  do
    sed "$detail" "$template" > "OUTPUT_DIR/$email"
  done;
done;