我有3个文件
1)Test1.txt
07777777
07777778
07777779
2)Test2.txt
A100192
A100193
A100194
3)Test3.txt
INST
DISC
INST
现在我想将所有三个文件分成一个新文件,如下所示
Output.txt的
aaa<Test2.txt> <Test1.txt><Test3.txt>bbb <sometext>
有没有办法通过shell脚本(bash)执行上述操作?
最终输出应该看起来像
"xyzA100192 07777777INSTxyz xyz "
其中A100192
取自test2.txt
,07777777
取自test1.txt
而INST
取自test3.txt
同样我需要填充test1.txt,test2.txt和test3.txt中的每个值,看起来像
xyzA100192 07777777INSTxyz xyz
xyzA100193 07777778DISCxyz xyz
xyzA100194 07777779INSTxyz xyz
非常感谢, V
答案 0 :(得分:0)
仅基于您的评论
啊,你确实编辑了它。
exec 3< test1.txt 4< test2.txt 5< test3.txt
test1open=true test2open=true test3open=true
while $test1open && $test2open && $test3open ; do
$test1opne && {
read -u3 test1 || {
test1open=false
test1=
}
}
[[etc.]]
剩下的就是练习。
答案 1 :(得分:0)
Thsi可以做到:
paste f1 f2 f3 | awk '{print "xyz"$1, $2$3"xyz", "xyz"}'
paste
单独打印所有三个文件:
$ paste f1 f2 f3
07777777 A100192 INST
07777778 A100193 DISC
07777779 A100194 INST
然后用awk
来欺骗一点。
$ paste f1 f2 f3 | awk '{print "xyz"$1, $2$3"xyz", "xyz"}'
xyz07777777 A100192INSTxyz xyz
xyz07777778 A100193DISCxyz xyz
xyz07777779 A100194INSTxyz xyz
请注意,您可以使用-v OFS
设置输出字段分隔符,并定义示例选项卡。默认值为space:
$ paste f1 f2 f3 | awk -v OFS="\t" '{print "xyz"$1, $2$3"xyz", "xyz"}'
xyz07777777 A100192INSTxyz xyz
xyz07777778 A100193DISCxyz xyz
xyz07777779 A100194INSTxyz xyz
答案 2 :(得分:0)
Just Bash:
while read -ru 3 A && read -ru 4 B && read -ru 5 C; do
echo "xyz${B} ${A}${C}xyz xyz "
done 3< Test1.txt 4< Test2.txt 5< Test5.txt