来自于文件的变量

来自于文件的变量

我有一个固定格式的文件如:
A=张三
B=海南
C=123456
&
A=李四
B=山东
C=654321
P
我想做一个shell把它打印到另一文件格式为:

姓名  地址  电话
张三  海南  123456
李四  山东  654321

请教如何实现。      
& 和 P 也是文件的一部分吗?
(sorry,我把另外一个相同内容的帖子给 delete 了)      
举例说明:
$ vi dir.sh
复制内容到剪贴板
代码:
#! /bin/bash

echo -e "name\taddr\ttele"
echo "-----------------------"
next=name
for i in $(cat dir.txt)
do
    if [ $next = name ]; then
        echo -e -n "${i#$next=}\t"
        next=addr
    elif [ $next = addr ]; then
        echo -e -n "${i#$next=}\t"
        next=tele
    elif [ $next = tele ]; then
        echo ${i#$next=}
        next=name
    fi
done
$ chmod u+x dir.sh
$ vi dir.txt
复制内容到剪贴板
代码:
name=clark
addr=ict
tele=62659372

name=wj
addr=ccc
tele=13689294951
$ ./dir.sh
输出:
复制内容到剪贴板
代码:
name    addr    tele
-----------------------
clark   ict     62659372
wj      ccc     13689294951
      
谢谢版主,但&与P确实是文本的一部分。

&是间隔,P是结束。而且,这个文本不是我生成的,按你的SHELL是不是

要生成一个中间文本,先把&与P删除?      
去掉 & 和 P 很容易实现的,自己试试先      
有人给我这样一个代码,也是关于这个问题的,请版主看一下,我执行是有错:


awk -F"=" 'BEGIN{printf"姓名  地址  电话\n"}{if(NR%4==0){printf"\n"}else{printf"%-.8s  ",$2}}'  abc.txt >newabc.txt      
对 awk 不熟,有时间研究研究      
用 awk 实现:

$ vi dir.awk
复制内容到剪贴板
代码:
#! /bin/awk -f

BEGIN {
    FS = "=";
    printf "name\taddr\ttele\n";
    printf "------------------------\n";
}

{
    if ($0 == "&" || $0 == "P")
    {
    }
    else
    {
        if ($1 == "name" || $1 == "addr")
            printf "%s\t", $2;
        else
            printf "%s\n", $2;
    }
}
$ chmod u+x dir.awk

$ vi dir.txt
name=clark
addr=ict
tele=62659372
&
name=wj
addr=ccc
tele=13689294951
P

$ ./dir.awk dir.txt
复制内容到剪贴板
代码:
输出:
name    addr    tele
------------------------
clark   ict     62659372
wj      ccc     13689294951