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:>>表示以追加的形式写文件


 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值