SED 模式和保持空间的奇怪结果

SED 模式和保持空间的奇怪结果

我有以下 SED 代码,它提取用户名及其出生日期并将其显示在一行上。用户名和出生日期是两行。

问题是每次遇到并存储名称时,保留缓冲区都不会被覆盖。有时它可以正确显示大约10个用户,但有时它会显示相同的名称(2或3次)。查看当前结果。

sed -rn \  
    -e '/^Name:/{  
       s/Local:.*//
       s/Name: //
       s//\1/  
       h  
       }'\   

    -e '/DOB:/{
        s/(.*DOB:\s([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}).*)/\2/
        #s/(.*DOB:\s(.*)\sMem.*)/\2/
        G
        s/(.*)\n(.*)/\2\t\1/
        p
       }' $f

我认为上面的代码会给我类似的输出:

当前结果

Tito Puente     8/21/1999  
Tito Puente     23/13/1967  
ARON BYRDMAN    6/24/1320  
JOE P. EARTHE   9/7/1961  
WISTON P. GREY  HEAVEN, NY 10121 DOB: Mem Status: Journeyman  
WISTON P. GREY  42/12/1949  

样本数据

我尝试了各种选择都无济于事。有人有线索吗?

相关内容