添加来自不同文件的数据并附加文本 - shell

时间:2014-06-02 15:45:48

标签: bash shell

我有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.txt07777777取自test1.txtINST取自test3.txt

同样我需要填充test1.txt,test2.txt和test3.txt中的每个值,看起来像

xyzA100192  07777777INSTxyz  xyz   
xyzA100193  07777778DISCxyz  xyz   
xyzA100194  07777779INSTxyz  xyz   

非常感谢, V

3 个答案:

答案 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
相关问题