批处理文件 - 读取txt文件并重新格式化文本

时间:2016-04-27 16:09:33

标签: windows batch-file cmd

我有一个非常可怕的txt文件,我正在寻找一种方法来重新格式化文件的内容。该文件的示例如下所示

{'4': 20947, 's': 3263, '6': 20837, 'A': 3490, 'U': 3467, 'g': 3277, 'd': 3245, 'H': 3534, 'Y': 3534, 'm': 3297, 'r': 3400, 'u': 3157, 'X': 3501, 'i': 3354, '2': 21012, 'V': 3398, '3': 20864, 'G': 3528, 'M': 3540, '\n': 30212, 'n': 3296, 'T': 3620, 'R': 3500, 'j': 3205, 'W': 3512, 'N': 3483, 'v': 3260, 'I': 3488, 'e': 3179, 'w': 3290, 'P': 3575, '0': 9455, 'L': 3473, 'q': 3284, '1': 21093, 'b': 3216, '9': 18626, 'F': 3494, '8': 20916, '7': 20746, 'x': 3231, 'o': 3162, 'y': 3295, '5': 21467, 'p': 3245, 'E': 3535, 'Q': 3345, 'K': 3619, 'h': 3320, 'f': 3295, 'l': 3284, 'D': 3590, 'c': 3258, 'C': 3473, 'k': 3213, 'a': 3023, 'J': 3504, 't': 3246, 'O': 3463, 'S': 3522, 'B': 3514}

我希望能够在引号''中读取字符,然后以字母数字的顺序打印冒号后面的值。例如:

a: 1233
A: 2345
b: 1023
B: 1542
c: 2415
# And so on....

为了方便起见,我认为通过批处理文件这样做是理想的,但不知道如何去做 - 任何帮助都会很棒!

2 个答案:

答案 0 :(得分:3)

删除所有不需要的字符,然后使用普通for进行解析。对输出进行排序,完成。

@echo off
<input.txt set /p line=
set line=%line:{=%
set line=%line:}=%
set line=%line:'=%
set line=%line: =%
((for %%i in (%line%) do @echo %%i)|sort)>output.txt

答案 1 :(得分:0)

如果您需要在冒号后面显示空格,那么您可以尝试:

@echo off
setlocal enabledelayedexpansion

<crackline.txt set /p line=

set line=%line:{=%
set line=%line:}=%
set line=%line:'=%
set line=%line: =%

for %%i in (%line%) do (
    set L=%%i
    @echo !L::=: !
)