windows - 如何获取非常不寻常的格式文本文件的必要值?

标签 windows batch-file awk cmd

我有一个输出,它是一个像这样的文本文件 (C:\test.txt)

database_name                                                                                                                   |database_size     |unallocated space 
--------------------------------------------------------------------------------------------------------------------------------|------------------|------------------
web                                                                                                                     |          11120.00 MB       |11157.80 MB       

(1 sˆ—‚³‚ê‚Ü‚µ‚½)
reserved          |data              |index_size        |unused            
------------------|------------------|------------------|------------------
111360 KB         |11560 KB          |11160 KB          |111640 KB          

(1 sˆ—‚³‚ê‚Ü‚µ‚½)

不用说,这是一团糟。 但是,我想获得“未使用”列的值,即 111640。

我的机器是 Windows,我尝试了以下代码,但它没有给我任何信息:

@echo off
SET _c=
FOR /F "tokens=4 delims= " %%G IN (C:\test.txt) DO (
    IF DEFINED _c <nul set /p z=", "
    <nul set /p z=%%G
    SET _c=1
)

谁能告诉我如何获取这个值?

最佳答案

由于您的问题被标记为 ,怎么样

awk -F "|" "$NF ~ /unused/{p=1} p && /[0-9]/ { print $NF; p = 0 }" messyfile.txt

我希望双引号适用于 Windows;在 U*x 上,我将始终使用单引号。

-F设置字段分隔符,NF为字段数;所以 $NF 检查每一行的最后一个字段。如果我们在最后一个字段中看到 unused,请开始查找数字。当我们看到一行至少包含一个数字时,打印该行的最后一个字段。

如果这与您想要的足够接近,我相信您可以想出如何调整它,例如删除 KB 后缀(提示:sub()split())。

关于windows - 如何获取非常不寻常的格式文本文件的必要值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54343787/

相关文章:

更改文件并保存的shell命令

c# - WebRequest中如何模拟DNS名称解析失败?

windows - 使用 Cygwin 从 Windows 运行 fork(2)。可能的?

windows - ActivePerl。 .pl 文件不再执行,而是在记事本中打开

windows - CUDA 错误后重置 GPU 和驱动程序

batch-file - 如何将 Windows 批处理文件中从 0 到 9 的数字回显到没有尾随空格的文件?

python - 不能使 SVN 预提交脚本与 Windows 服务器失败

batch-file - Sonar 设置未定义的强制属性

awk - 根据特定列的修改拆分表文件

regex - Grep 每行中第一次出现的位置