我有一个输出,它是一个像这样的文本文件 (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 ,怎么样
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/