中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 05:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » for中的awk FS问题 查看 808 回复 3
楼 主 for中的awk FS问题 发表于 2007-10-25 10:48 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
原目的是希望將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 ]
2 发表于 2007-10-25 11:32 ·  中国 台湾 中华电信(HiNet)数据中心
初级用户
积分 83
发帖 34
注册 2007-10-14 13:49
18年会员
UID 99713
性别 男
状态 离线
回家测试一下!呵呵。
3 发表于 2007-10-25 11:39 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
但實際執行時的結果卻只有Sen這部分,即 FS=\"[=(,]\" 這部分並未生效。

对这句纠正一下,不能说完全未生效,因为从结果来看是在以(和空格为分隔符,而不是= ( ,这三个
4 发表于 2007-10-26 14:37 ·  中国 上海 浦东新区 电信
初级用户
★★
积分 196
发帖 82
注册 2005-09-26 11:31
20年会员
UID 42842
状态 离线
若我把这一段生成的txt文件做为fileset让for执行,就能得到我需要的东西。
真想不通……
('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"')
论坛跳转: