中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: for中的awk FS问题 上一主题 | 下一主题
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『楼 主』:  for中的awk FS问题

原目的是希望將AD中4周未登陸賬號導出來,並去掉多餘信息,控制輸出格式。

使用命令如下:

for /F "tokens=*" %i in ('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"') do echo %i

()中的部分:
dsquery user "LDAP path ou" -inactive 4 | gawk "BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"
可以產生正確的需處理文本
"LDAP path ou"代表account所在的OU,當不加AWK部分時,輸出是我所需要的,即如下形式:
"CN=Jaks Sen(張三_London),LDAP path ou"


需求是將=和(中間的部分 Jaks Sen 取出,且改為Jaks_Sen。
但實際執行時的結果卻只有Sen這部分,即 FS=\"[=(,]\"  這部分並未生效。

請教是否AWK放進FOR之後,還有什麼需要注意的地方?

[ Last edited by pillow on 2007-10-25 at 11:01 AM ]

2007-10-25 10:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhclsy
初级用户





积分 83
发帖 34
注册 2007-10-14
状态 离线
『第 2 楼』:  

回家测试一下!呵呵。

2007-10-25 11:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『第 3 楼』:  

但實際執行時的結果卻只有Sen這部分,即 FS=\"[=(,]\"  這部分並未生效。

对这句纠正一下,不能说完全未生效,因为从结果来看是在以(和空格为分隔符,而不是= ( ,这三个

2007-10-25 11:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pillow
初级用户





积分 196
发帖 82
注册 2005-9-26
状态 离线
『第 4 楼』:  

若我把这一段生成的txt文件做为fileset让for执行,就能得到我需要的东西。
真想不通……
('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"')

2007-10-26 14:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: