Board logo

标题: for中的awk FS问题 [打印本页]

作者: pillow     时间: 2007-10-25 10:48    标题: 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 ]
作者: zhclsy     时间: 2007-10-25 11:32
回家测试一下!呵呵。
作者: pillow     时间: 2007-10-25 11:39
但實際執行時的結果卻只有Sen這部分,即 FS=\"[=(,]\"  這部分並未生效。

对这句纠正一下,不能说完全未生效,因为从结果来看是在以(和空格为分隔符,而不是= ( ,这三个
作者: pillow     时间: 2007-10-26 14:37
若我把这一段生成的txt文件做为fileset让for执行,就能得到我需要的东西。
真想不通……
('dsquery user "LDAP path ou" -inactive 4 ^| gawk
"BEGIN{ FS=\"[=(,]\"; print \"UserName\"} {print $2}"')