我有以下 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
我尝试了各种选择都无济于事。有人有线索吗?