我想制作一个删除所有空行的批处理文件,并对文件中的行进行常规不区分大小写的排序。
到目前为止,我得到了这个:
@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兼容?
谢谢!
更新 忘记提到我使用的是Windows但是使用Cygwin,所以我有一般的linux shell命令,比如grep,sed等......
答案 0 :(得分:1)
Cygwin sort -f
将通过将所有字符转换为大写字母来对文件进行不区分大小写的排序。
Cygwin iconv
从一个字符集转换为另一个字符集。
答案 1 :(得分:0)
grep -e '[[:graph:]]' foo.txt | sort -f
简而言之,此命令查找具有至少一个可见字符的任何行。因此,排除仅包含空格和制表符的行。
出于某种原因,我正在使用的文件没有响应我能想到使用'^'和'$'的任何组合。