我有一个包含此脚本(((A:__ ,B:__ ):__ ,C:__ ):__ ,D:__ )
我还有其他六个文本文件,每个文件包含500个随机数。我需要将这些随机数添加到第一个文件的空白处。
即。如果t1,t2,t3,t4,t5,t6是六个文件,他们有数字,如
t1 t2 t3 t4 t5 t6
2 32 34 213 23 54
3 34 34 67 56 56
5 45 78 78 89 32
5 23 45 45 67 78
... ... ... ... ... ...
将这些合并后,我应该得到像
这样的结果(((A:2,B:32):34,C:213):23,D:54)
(((A:3,B:34):34,C:67):56,D:56)
等
我尝试过粘贴函数和循环来创建这种对齐,但是它们没有将文本放在正确的位置。我如何使其工作? 我在Linux中这样做。
答案 0 :(得分:2)
我认为这样做会:
paste t1 t2 t3 t4 t5 t6 |
awk 'BEGIN { getline < "template"; gsub("__", "%f"); format = $0 }
{ printf(format"\n", $1, $2, $3, $4, $5, $6); }'
paste
将6个输入文件合并在一起。 awk
脚本的第一行读取第一个文件(用文件名替换template
)并将每个__
更改为%s
,以便将其用作格式带有printf
的字符串。
答案 1 :(得分:1)
使用bash文件描述符的解决方案对我有用...我打开每个文本文件的文件描述符(你必须从FD 3开始,因为0-2是由stdin,stdout,stderr。)然后,只要t1中有数据,我就会继续读取t2-t6,只需打印出所需格式的输出。
#!/bin/bash
exec 3<> t1.txt
exec 4<> t2.txt
exec 5<> t3.txt
exec 6<> t4.txt
exec 7<> t5.txt
exec 8<> t6.txt
while read one <&3
do
read two <&4
read three <&5
read four <&6
read five <&7
read six <&8
echo "(((A:$one,B:$two):$three,C:$four):$five,D:$six)"
done