shell实现读取两个相同行的文件并根据指定分隔符拼接成一个文件

场景:
    文件A内容如下:
        a
        b
        c
        d
        e
    文件B内容如下:
        1
        2
        3
        4
        5
    需要生成文件如下:
        a-1
        b-2
        c-3
        d-4
        e-5
        
首先创建文件ab,内容为要合并的文件名,如下:
        A
        B

第一种方法麻烦,代码如下:

LE=$(sed -n '$=' ./ab)  //获取ab的行数
for((j=1;j<2;j++));    //此处for循环用于合并多个文件,单数是源文件名,双数是目标文件名
do
        SRC=$(sed -n "${j}p" ./ab)  //获取指定行的内容
        TGT=$(sed -n "$[$j+1]p" ./ab)
        LEN=$(sed -n '$=' ./${SRC})
        for((i=1;i<$LEN+1;i++));
        do
                VAL=$(sed -n "${i}p" ./${SRC})
                VAL1=$(sed -n "${i}p" ./${TGT})
                echo $VAL"-"$VAL1 >> ./out/${SRC};
        done
done

第二种方法简单:(假设两个文件在一个文件夹中,注意两个文件的行数要一致)

paste -d'-' * >> myfile
 

PS:>>表示以追加的形式写文件


 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页