我想制作一个批处理文件,该文件删除所有空白行,并对文件中的行进行常规的不区分大小写的排序。
到目前为止,我知道了:
@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等...
Cygwin sort -f
将通过将所有字符都转换为大写来不区分大小写地对文件进行排序。
Cygwin iconv
从一个字符集转换为另一个字符集。
grep -e '[[:graph:]]' foo.txt | sort -f
简而言之,此命令将查找具有至少一个可见字符的任何行。因此,仅包含空格和制表符的行被排除。
由于某种原因,我正在使用的文件没有响应我可以想到的使用'^'和'$'的任何组合。