标题: 字符串整理
[打印本页]
作者: drsh
时间: 2007-10-29 19:06
标题: 字符串整理
有这么一个文本test.txt
202.105.205.4 1047 :Vulnerability OS:window 2003
202.106.102.122 1029 :Vulnerability 1025
OS:window 2000
202.107.35.254 1028 :Vulnerability OS:window 2000
202.106.102.195 1029 :Vulnerability 1034
OS:window 2003
202.107.209.116 1028 :Vulnerability OS:window 2003
要求整理成new.txt
202.105.205.4 1047 :Vulnerability OS:window 2003
202.106.102.122 1029 :Vulnerability OS:window 2000
202.107.35.254 1028 :Vulnerability OS:window 2000
202.106.102.195 1029 :Vulnerability OS:window 2003
202.107.209.116 1028 :Vulnerability OS:window 2003
涉及字符串的删除和两行并成一行,还可能用到字符长度判断,看了许多帖子都无法解决,哪位高手能给一个具体的方案呢?谢谢!
作者: lxmxn
时间: 2007-10-29 20:13
test.awk的内容:
CODE: [Copy to clipboard]
BEGIN{
OFS="\t";
}
{
gsub(/[[:space:]][[:space:]]+/,"\t");
if(NF==4){
$NF="";
temps=$0;
} else {
if($1~/^OS:window/){
print temps""$0
}else{print;}
}
}
命令行执行:
CODE: [Copy to clipboard]
gawk -f test.awk test.txt
gawk 是外部工具,在批处理室置顶贴中找。
作者: drsh
时间: 2007-10-29 20:32
多谢了!
gawk链接失效了,无法测试。
能不用外部工具来实现吗。
作者: drsh
时间: 2007-10-29 20:44
果然可以实现,不过如何输出到文本呢。
作者: drsh
时间: 2007-10-29 21:43
有人能用纯DOS解决吗,谢谢。
作者: lxmxn
时间: 2007-10-30 14:46
可以在命令后面加一个重定向就可以了。
用纯批处理也行,不过局限性很大,只针对你的范例文本。
CODE: [Copy to clipboard]
@echo off
for /f "tokens=1-5" %%a in (test.txt) do (
if not "%%e"=="" (echo %%a %%b %%c %%d %%e) else (
if "%%a"=="OS:window" echo %%a %%b
if not "%%d"=="" set /p some=%%a %%b %%c <nul
)
)
pause