使用 findstr 或 awk 和 sed 过滤文件
Filter file with findstr or awk and sed
我正在尝试根据分号前的反斜杠过滤此文件,例如过滤下面的文件以获得分号前最多包含六个反斜杠的行
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\SametimeChatHistory\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
期望的输出
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
我试过运行
findstr /r "\\.*\.*\.*\;"
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\SametimeChatHistory\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
但它不起作用,它带来了比我想要的更多的行,如果有人对 windows findstr 或 awk / sed 有任何其他想法,我将不胜感激
仅在第一个分号之前显示带有六个反斜杠的行。将if语句中的==
改为<=
,如果需要在分号前保留所有小于等于6的行。
$ awk -F';' '{if (split(,a,"\") == 7) print [=10=];}' test
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
正如@Ed Morton 在下面的评论中指出的那样,这可以简化为
awk -F';' 'split(,a,/\/) <= 7' test
$ awk -F';' '{k=} gsub(/\/,"",k)<=6' file
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
我正在尝试根据分号前的反斜杠过滤此文件,例如过滤下面的文件以获得分号前最多包含六个反斜杠的行
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\SametimeChatHistory\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
期望的输出
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
我试过运行
findstr /r "\\.*\.*\.*\;"
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\My Documents\SametimeChatHistory\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
但它不起作用,它带来了比我想要的更多的行,如果有人对 windows findstr 或 awk / sed 有任何其他想法,我将不胜感激
仅在第一个分号之前显示带有六个反斜杠的行。将if语句中的==
改为<=
,如果需要在分号前保留所有小于等于6的行。
$ awk -F';' '{if (split(,a,"\") == 7) print [=10=];}' test
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
正如@Ed Morton 在下面的评论中指出的那样,这可以简化为
awk -F';' 'split(,a,/\/) <= 7' test
$ awk -F';' '{k=} gsub(/\/,"",k)<=6' file
\Filehomeserver\homefolder\eduardo\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI (0x03);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Thumbs.db;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)
\Filehomeserver\homefolder\eduardo\My Documents\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:OI,CI,IA (0x13);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:OI,CI,IA (0x13)
\Filehomeserver\homefolder\eduardo\Notes ID file\eduardo.id;USDOM\eduardo : Allowed CHGE:EWXD (0x001301BF) Flags:IA (0x10);USDOM\sec_&Conf_group: Allowed FULL:EWXPOD (0x001F01FF) Flags:IA (0x10)