Bash 使用shell脚本读取两个文件并在第三个文件中按顺序写入数据

Bash 使用shell脚本读取两个文件并在第三个文件中按顺序写入数据,bash,shell,awk,Bash,Shell,Awk,我有两个文件。第一个文件具有恒定的详细信息(如参考文件)。另一个文件中有动态数据。它具有与使用shell脚本的第一个文件键关联的值 File1.txt CIN|Template|Date File2.txt 1234|QWERTY|2019-03-18 5678|ASDF|2019-03-18 9012|ZXCVB| 我想要输出文件output.txt如下: {CIN: 1234 Template: QWERTY Date: 2019-03-18} {CIN: 5678 Template:

我有两个文件。第一个文件具有恒定的详细信息(如参考文件)。另一个文件中有动态数据。它具有与使用shell脚本的第一个文件键关联的值

File1.txt

CIN|Template|Date
File2.txt

1234|QWERTY|2019-03-18
5678|ASDF|2019-03-18
9012|ZXCVB|
我想要输出文件
output.txt
如下:

{CIN: 1234
Template: QWERTY
Date:  2019-03-18}
{CIN: 5678
Template: ASDF
Date: 2019-03-18}
{CIN: 9012
Template: ZXCV
Date: }
使用awk:

$ awk -F\| '             # set field separator
NR==FNR {                # process first file
    split($0,a)          # split on field separator and hash to a
    next
}
{                        # second file
    for(i=1;i<=NF;i++)   # iterate all fields and output refering titles from a
        printf "%s%s: %s%s\n",(i==1?"{":""),a[i],$i,(i==NF?"}":"")
}' file2 file2
试试这个:

#!/bin/bash
FILE1=File1.txt
FILE2=File2.txt

IFS="|"
read -a Header < $FILE1
ColumnsCount=${#Header[@]}

while read line; do
    read -a Values <<< $line
    echo -n "{"
    for ((i=0; i < $ColumnsCount; i++)); do
        echo -n "${Header[$i]}: ${Values[$i]}"
        if [[ $i -lt $((ColumnsCount - 1)) ]]; then
            echo
        fi
    done
    echo "}"
done < $FILE2
#/bin/bash
FILE1=FILE1.txt
FILE2=FILE2.txt
IFS=“|”
读取-标题<$FILE1
ColumnsCount=${#头[@]}
读行时;做
读取-a值这是我的解决方案

awk -F "|" 'NR==FNR {first= $1; second=$2; third=$3;} NR > 1{print "{" first ":" $1 "\n" second ":" $2 "\n" third ": "$3  "}" }' File1.txt File2.txt


{CIN:1234
Template:QWERTY
Date: 2019-03-18}
{CIN:5678
Template:ASDF
Date: 2019-03-18}
{CIN:9012
Template:ZXCVB
Date: }
你有没有尝试过任何东西(顺便说一句,不是我的否决票)?…也就是说——一个好问题不仅仅是你希望别人编写的代码规范,而是你自己编写代码时遇到的一个孤立问题,显示了你现有的努力以及你在哪里/如何陷入困境。
awk -F "|" 'NR==FNR {first= $1; second=$2; third=$3;} NR > 1{print "{" first ":" $1 "\n" second ":" $2 "\n" third ": "$3  "}" }' File1.txt File2.txt


{CIN:1234
Template:QWERTY
Date: 2019-03-18}
{CIN:5678
Template:ASDF
Date: 2019-03-18}
{CIN:9012
Template:ZXCVB
Date: }