|
dj0733
初级用户
![](images/default/star.gif) ![](images/default/star.gif)
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『楼 主』:
求助!从身份证编号,获取出身日期![已经解决]
452327198203062454
440682198303046336
420111197808037354
412727800515618
420221197711186191
43072419811129164
43040319751026101
以上.我有18位的号,.也有15位的ID
身份证号码与一个人的性别、出生年月、籍贯等信息是紧密相连的,无论是15位还是18位的身份证号码,其中都保存了相关的个人信息。
15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。
18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。
例如,某员工的身份证号码(15位)是3205219720807024,那么表示1972年8月7日出生,性别为女
我们要做的是把19720807 提取出来.
ECHO 成 YYYY-MM-DD 的格式
哪位帅哥帮帮忙..
[ Last edited by dj0733 on 2007-2-2 at 11:13 PM ]
|
![](images/common/sigline.gif)
偶其实很喜欢批处理 |
|
2007-2-3 10:34 |
|
|
namejm
荣誉版主
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
2 楼』:
本人不帅,凑个热闹,发段代码出来:
@echo off
for /f %%i in (test.txt) do call :pickup %%i
pause
goto :eof
:pickup
set str=%1
if "%str:~15,1%"=="" (
echo 19%str:~6,2%-%str:~8,2%-%str:~10,2%
) else (
echo %str:~6,4%-%str:~10,2%-%str:~12,2%
)
goto :eof
|
![](images/common/sigline.gif)
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2007-2-3 11:29 |
|
|
dj0733
初级用户
![](images/default/star.gif) ![](images/default/star.gif)
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『第
3 楼』:
斑竹好强.但是能不能输出为一个TXT文件呢/>?
|
![](images/common/sigline.gif)
偶其实很喜欢批处理 |
|
2007-2-3 12:05 |
|
|
dj0733
初级用户
![](images/default/star.gif) ![](images/default/star.gif)
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『第
4 楼』:
已经解决了~加>>OK.txt
|
![](images/common/sigline.gif)
偶其实很喜欢批处理 |
|
2007-2-3 12:12 |
|
|
dj0733
初级用户
![](images/default/star.gif) ![](images/default/star.gif)
积分 138
发帖 55
注册 2007-2-2
状态 离线
|
『第
5 楼』:
谢谢班竹的热心..感激中!
|
![](images/common/sigline.gif)
偶其实很喜欢批处理 |
|
2007-2-3 12:12 |
|
|
anqing
高级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 859
发帖 413
注册 2006-8-14
状态 离线
|
『第
6 楼』:
好强,但对%1的用法,还是不解?
|
|
2007-2-3 12:28 |
|
|
amao
中级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 316
发帖 152
注册 2006-6-18
状态 离线
|
『第
7 楼』:
我也喜欢凑热闹,基于楼主给出的数据(居然有17位的,汗~ ,这种情况应该是以x结尾的吧)。
@sed "s/ //g;/.\{17,18\}/s/.\{6\}\(.\{8\}\).*/\1/;/^.\{15\}$/s/.\{6\}\(.\{6\}\).*/19\1/" id.txt> temp.txt
@sed "s/\(.\{4\}\)\(.\{2\}\)\(.\{2\}\)/\1-\2-\3/" temp.txt> result.txt
@del temp.txt
[ Last edited by amao on 2007-2-4 at 01:45 PM ]
|
|
2007-2-4 12:39 |
|
|
无奈何
荣誉版主
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
8 楼』:
我也凑个 sed 的,写在一行有点长
sed -r "/[0-9]{18}/s/[^0-9]*[0-9]{6}([0-9]{4})([0-9]{2})([0-9]{2}).*/\1-\2-\3/;t;s/[^0-9]*[0-9]{6}([0-9]{2})([0-9]{2})([0-9]{2}).*/19\1-\2-\3/" file.txt
|
![](images/common/sigline.gif)
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2007-2-4 13:38 |
|
|
amao
中级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 316
发帖 152
注册 2006-6-18
状态 离线
|
『第
9 楼』:
Quote: | Originally posted by 无奈何 at 2007-2-4 13:38:
我也凑个 sed 的,写在一行有点长
[code]
sed -r "/[0-9]{18}/s/[^0-9]*[0-9]{6}([0-9]{4})([0-9]{2})([0-9]{2}).*/\1-\2-\3/;t;s/[^0-9]*[0-9]{6}([0-9]{2})([0-9]{2})([0-9]{2}).*/19\1- ... |
|
用了-r 扩展后看起来清爽多了。不过根据我国实际情况,18位身份证的最后一位有可能是x,所以斑竹的代码要稍微修改一下。
[ Last edited by amao on 2007-2-4 at 02:08 PM ]
|
|
2007-2-4 13:50 |
|
|
amao
中级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 316
发帖 152
注册 2006-6-18
状态 离线
|
『第
10 楼』:
我也发个-r 扩展的
sed -r "s/ //g;/.{17,18}/s/.{6}(.{8}).*/\1/;/^.{15}$/s/.{6}(.{6}).*/19\1/;s/(.{4})(.{2})(.{2})/\1-\2-\3/" id.txt
|
|
2007-2-4 14:17 |
|
|
无奈何
荣誉版主
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
11 楼』:
RE amao
身份证的最后一位 x 是校验位,实际使用的是具体校验数字值,不会出现字符的。
我的脚本没有做容错处理,默认不是 18 位就是 15 位,不过可以再细化一下。
论坛里热心使用 sed 的不多,很高兴看到又多了一位 seder 。
|
![](images/common/sigline.gif)
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2007-2-4 14:18 |
|
|
amao
中级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 316
发帖 152
注册 2006-6-18
状态 离线
|
|
2007-2-4 14:39 |
|
|
无奈何
荣誉版主
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 1338
发帖 356
注册 2005-7-15
状态 离线
|
『第
13 楼』:
RE amao
简单搜一下,兄是对的,看来我真是孤陋寡闻了,一直以为最后校验位是数字。
”较真“ 才能更好明白问题,多一些 ”较真“ 才有进步吗!
简单修正一下:
sed -r "/[0-9]{17}[0-9xX]/s/[^0-9]*[0-9]{6}([0-9]{4})([0-9]{2})([0-9]{2}).*/\1-\2-\3/;t;/[0-9]{17}/d;s/[^0-9]*[0-9]{6}([0-9]{2})([0-9]{2})([0-9]{2}).*/19\1-\2-\3/" file.txt
|
![](images/common/sigline.gif)
☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
|
|
2007-2-4 15:04 |
|
|
amao
中级用户
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 316
发帖 152
注册 2006-6-18
状态 离线
|
『第
14 楼』:
Quote: | Originally posted by 无奈何 at 2007-2-4 14:18:
RE amao
身份证的最后一位 x 是校验位,实际使用的是具体校验数字值,不会出现字符的。
我的脚本没有做容错处理,默认不是 18 位就是 15 位,不过 ... |
|
是啊,记得以前有twf_cc兄,不过一会就不见了;还有不久前tigerpower兄也发过sed的帖子,不过很少;还有就是无奈何兄和vkill兄了;我一直很忙,所以潜水居多;难得这周比较闲,所以就发了一些帖子;下周又开始忙了,所以也不知道有没有时间像现在这样仔细的看帖发帖了。
|
|
2007-2-4 17:15 |
|
|
vkill
金牌会员
![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif) ![](images/default/star.gif)
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
15 楼』:
呵呵,又多了位seder ,不过我更喜欢写为这样 \([0-9]\{4\}\) ,觉得这样看起来舒服点
|
|
2007-2-4 17:59 |
|