我希望能够解析包含如下数据的文本文件:
2014-08-06 18:06:15 e:\shared\filename1.Shared orphan entry BM-100
2014-08-06 18:46:15 e:\shared\filename222.Shared orphan entry BM-214
2014-08-06 18:53:15 e:\shared\filename92.Shared orphan entry BM-674
这是在 Windows 上,我希望能够运行批处理文件脚本来删除 .shared 文件扩展名后面的日期字符串和文本。有什么想法吗?
答案1
您需要 Unix 实用程序sed,它可以处理正则表达式编辑,并且可用于多个 Windows 版本(只需查找执行文件)。如果你将文件名传递给批处理文件,它应该包含类似以下内容:
sed <"%1" 's/\.Shared .*$'//|sed 's/^.* .* //' >"%1.mod"
这将删除每行中的“。共享”到行尾,然后从行首到第二个空白,并将结果保存在传递的文件名中.mod附录。
当然,您可以删除其中一个或两个重定向,而是在调用批处理文件时重定向输入和/或输出。
答案2
如果你使用的是 Windows Vista 或更高版本,则可以使用 PowerShell
(gc D:\input.txt) | % {$_ -replace "2014", "xxx"} | sc D:\input.txt
gc myPath
Get-Content 的别名用于读取文件|
将文本传送到下一个命令()
必须使用,否则当你想写回输入文件时,输入文件仍然打开% { ... }
ForEach-Object 的别名,迭代每一行-replace LookFor, ReplaceWith
替换你的字符串sc myPath
Set-Content 的别名,用于将新内容写回到同一路径
进一步阅读
答案3
使用这个python脚本(它内置于大多数linux发行版中,并且很容易安装对于 Windows):
import sys
if __name__ == "__main__":
input_file = sys.argv[1]
output_file = sys.argv[2]
with open(input_file) as fp:
with open(output_file, 'w') as fp_w:
for line in fp:
fp_w.write("{}\n".format(line.split(' ')[2]))
你会得到这个输出:
e:\shared\filename1.Shared
e:\shared\filename222.Shared
e:\shared\filename92.Shared
创建python脚本的步骤:
- 创建一个名为
parser.py
(或任何你想叫的名字)的文件 - 将上面的代码复制到文件中
运行以下命令:
python parser.py test.txt test_output.txt
假设这
test.txt
是输入文件,并且test_output.txt
是您想要将结果写入的文件路径。
答案4
Windows 命令提示符
for /f "tokens=2-3" %i in (x.txt) do echo %i %j
结果是
18:53:15 e:\shared\filename92.Shared
(或者)
for /f "tokens=3" %i in (x.txt) do echo %i
导致
e:\shared\filename92.Shared