批处理文件删除空白行并对所有编码对文件进行排序(不区分大小写)

问题描述 投票:0回答:2

我想制作一个批处理文件,该文件删除所有空白行,并对文件中的行进行常规的不区分大小写的排序。

到目前为止,我知道了:

@echo off
IF [%1]==[] goto BAR_PAR

IF EXIST %1 (
    egrep -v "^[[:space:]]*$" %1 | sort > xxx
    mv -f xxx %1

) else (
    echo File doesn't exist
)
goto END

:BAR_PAR
echo No Parameter Passed

:END

但是这会破坏我的编码为UCS-2 Little Endian的文件。

是否可以盲目处理所有编码?如果没有,我应该怎么做才能使该UCS-2 Little Endian兼容?

UPDATE忘了提到我使用Windows但使用Cygwin,所以我有通用的Linux Shell命令,例如grep,sed等...

encoding batch-file
2个回答
1
投票

Cygwin sort -f将通过将所有字符都转换为大写来不区分大小写地对文件进行排序。

Cygwin iconv从一个字符集转换为另一个字符集。


0
投票
grep -e '[[:graph:]]' foo.txt | sort -f

简而言之,此命令将查找具有至少一个可见字符的任何行。因此,仅包含空格和制表符的行被排除。

由于某种原因,我正在使用的文件没有响应我可以想到的使用'^'和'$'的任何组合。

© www.soinside.com 2019 - 2024. All rights reserved.