shell实现读取两个文件并把行拼接成一行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35001776/article/details/82792069

场景:

第一种:
    文件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

第二种:(假设a和b在一个文件夹中)

读取../out下的文件夹名称,存储为文件夹名称列表

rm -f ./name
for NAME in $(dir ../out);
do
echo $NAME >>name;
done


读取的文件夹名称列表,访问该文件夹路径,对该文件夹下的文件进行合并(注意,合并的文件行应该相同)

for FN in $(cat name);
do
    echo $FN
    cd ../out/$FN
    paste -d'|' * >> ../../batch/out/$FN
    cd ../../batch
done
 

PS:>>表示写文件追加


 

扫描二维码关注公众号,回复: 4630014 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_35001776/article/details/82792069