linux中2个文件进行同行合并

2个行数不同的文件,我在进行同行合并时,希望在一个文件中多出来的行可以用另一个文件的最后一行补足。如vi1abcdvi212我进行合并后,希望看到的是a1b2c2d2pa... 2个行数不同的文件,我在进行同行合并时,希望在一个文件中多出来的行可以用另一个文件的最后一行补足。如
vi 1
a
b
c
d

vi 2
1
2
我进行合并后,希望看到的是
a 1
b 2
c 2
d 2
paste只能处理行数相同。感觉可以用sed做替换,或者写个shell来处理。求大神帮忙下
展开
 我来答
喊佳呀乖GA
2018-05-08 · TA获得超过364个赞
知道小有建树答主
回答量:555
采纳率:88%
帮助的人:166万
展开全部
#/bin/bash
count1=`cat file1|wc -l`
count2=`cat file2|wc -l`
a=`expr $count1 - $count2`
if [ $a -gt 0 ];then
for((i=1;i<=$count2;i++))
do
x=${i}"p"
echo "`cat file1|sed -n "$x"` `cat file2|sed -n "$x"`" >>/result.log
done
count=`expr $count2 + 1`
for((j=$count;j<=$count1;j++))
do
y=${j}"p"
z=${count2}"p"
echo "`cat file1|sed -n "$y"` `cat file2|sed -n "$z"`" >>/result.log
done
elif [ $a -lt 0 ];then
for((i=1;i<=$count1;i++))
do
x=${i}"p"
echo "`cat file2|sed -n "$x"` `cat file1|sed -n "$x"`" >>/result.log
done
count=`expr $count1 + 1`
for((j=$count;j<=$count2;j++))
do
y=${j}"p"
z=${count1}"p"
echo "`cat file2|sed -n "$y"` `cat file1|sed -n "$z"`" >>/result.log
done
else
for((k=1;k<=$count1;k++))
do
f=${k}"p"
echo "`cat file1|sed -n "$f"` `cat file2|sed -n "$f"`" >>/result.log
done
fi
行数小的写在行数大的后面,同行的话直接第二个文件内容写在第一个后面
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式