在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2716|回复: 10

[求助] 关于文本合并的问题

[复制链接]
发表于 2021-3-16 10:45:09 | 显示全部楼层 |阅读模式
100资产
我有6个文本(a,b,c,d,e,f)里面各有100行数据。
我想将他们合并成一个文本,并且每个文本的第一行以空格分隔排成一行,依次进行。

                               
登录/注册后可看大图

合并成这样。
该怎么用脚本来实现啊.


最佳答案

查看完整内容

shell脚本XXX.sh: g是合并后的新文件 cp a g; for i in `seq $1` do sed -i "$i s/$/ `cat b |head -n $i | tail -n +$i | xargs`/" g sed -i "$i s/$/ `cat c |head -n $i | tail -n +$i | xargs`/" g sed -i "$i s/$/ `cat d |head -n $i | tail -n +$i | xargs`/" g sed -i "$i s/$/ `cat e |head -n $i | tail -n +$i | xargs`/" g sed -i "$i s/$/ `cat f |head -n $i | tail -n +$i | xargs`/" g don ...
发表于 2021-3-16 10:45:10 | 显示全部楼层


muye1234 发表于 2021-3-16 15:12
就是循环提取,循环提取每个文件的第一行作为新文件的第一行,以空格或者TAB隔开。
然后提取每个文件的第 ...


shell脚本XXX.sh:  g是合并后的新文件
cp a g;
for i in `seq $1`
do
    sed -i "$i s/$/ `cat b |head -n $i | tail -n +$i | xargs`/" g
    sed -i "$i s/$/ `cat c |head -n $i | tail -n +$i | xargs`/" g
    sed -i "$i s/$/ `cat d |head -n $i | tail -n +$i | xargs`/" g
    sed -i "$i s/$/ `cat e |head -n $i | tail -n +$i | xargs`/" g
    sed -i "$i s/$/ `cat f |head -n $i | tail -n +$i | xargs`/" g
done
运行:./XXX.sh  <NUMBER>(需要合并的行数, eg: 100)
别忘了chmod

发表于 2021-3-16 13:44:14 | 显示全部楼层
"并且每个文本的第一行以空格分隔排成一行,依次进行“是什么意思……
 楼主| 发表于 2021-3-16 15:12:47 | 显示全部楼层


anpengfei 发表于 2021-3-16 13:44
"并且每个文本的第一行以空格分隔排成一行,依次进行“是什么意思……


就是循环提取,循环提取每个文件的第一行作为新文件的第一行,以空格或者TAB隔开。
然后提取每个文件的第二行作为新文件的第二行,依次进行。


发表于 2021-3-16 15:37:14 | 显示全部楼层
vimtree一个窗口打开多个文本,然后100yy, p,100yy,p; 结束。
用啥脚本。
发表于 2021-3-16 15:58:39 | 显示全部楼层
不太会别的 skill写了个
outPort = outfile( "./MergeFile" )
inPort_a = infile( "./a" )
inPort_b = infile( "./b" )
inPort_c = infile( "./c" )
inPort_d = infile( "./d" )
inPort_e = infile( "./e" )
inPort_f = infile( "./f" )
while( gets( nextLine_a inPort_a ) &&
                gets( nextLine_b inPort_b ) &&
                gets( nextLine_c inPort_c ) &&
                gets( nextLine_d inPort_d ) &&
                gets( nextLine_e inPort_e ) &&
                gets( nextLine_f inPort_f )
        fprintf(
                outPort
                "%A  %A  %A  %A  %A  %A\n"
                stringToSymbol(car(parseString(nextLine_a "\n")))
                stringToSymbol(car(parseString(nextLine_b "\n")))
                stringToSymbol(car(parseString(nextLine_c "\n")))
                stringToSymbol(car(parseString(nextLine_d "\n")))
                stringToSymbol(car(parseString(nextLine_e "\n")))
                stringToSymbol(car(parseString(nextLine_f "\n")))
        )
)
close( outPort )
close( inPort_a )
close( inPort_b )
close( inPort_c )
close( inPort_d )
close( inPort_e )
close( inPort_f )
 楼主| 发表于 2021-3-16 16:35:50 | 显示全部楼层


annyzer 发表于 2021-3-16 15:58
不太会别的 skill写了个
outPort = outfile( "./MergeFile" )
inPort_a = infile( "./a" )


好像不行,会报错。
发表于 2021-3-16 16:50:14 | 显示全部楼层


muye1234 发表于 2021-3-16 16:35
好像不行,会报错。


截个报错的图

 楼主| 发表于 2021-3-16 16:58:05 | 显示全部楼层
 楼主| 发表于 2021-3-17 09:11:48 | 显示全部楼层
可以用paste -d "  " a b c d e f >>g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 10:30 , Processed in 0.025076 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表