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

时间:2019-03-18 16:51:29

标签: 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: ASDF
Date: 2019-03-18}
{CIN: 9012
Template: ZXCV
Date: }

3 个答案:

答案 0 :(得分:0)

使用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

输出:

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

答案 1 :(得分:0)

尝试一下:

#!/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

答案 2 :(得分:0)

这是我的解决方法

<script type="text/javascript" src="../ClientGlobalContext.js.aspx"></script>