0

在这里需要一些帮助。

我有两个文件,

    file1.txt >
    5555555555
    1111111111
    7777777777

    file2.txt >
    0000000000
    8888888888
    2222222222
    4444444444
    3333333333

当我运行时, $ sort -m file1.txt file2.txt > file-c.txt 输出 file-c.txt 在 file1 和 file2 中合并,但未排序。

    file-c.txt >
    0000000000
    5555555555
    1111111111
    7777777777
    8888888888
    2222222222
    4444444444
    3333333333

当它发生时,我需要一个错误,说明文件(file1 和 file2)未排序,并且合并无法在文件排序之前合并文件。因此,当我运行时,$ sort -m file1.txt file2.txt > file-c.txt我必须得到一个错误,说它无法将 file1 和 file2 合并到 file-c,因为它们尚未排序。

希望你们能理解我:D

4

1 回答 1

0

如果我明白你在问什么,你可以这样做:

DIFF1=$(diff <(cat file1.txt) <(sort file1.txt))
DIFF2=$(diff <(cat file2.txt) <(sort file2.txt))
if [ "$DIFF1" != "" ]; then
echo 'file1 is not sorted'
elif [ "$DIFF2" != "" ]; then
echo 'file2 is not sorted'
else
sort -m file1.txt file2.txt
fi

这适用于 Bash(和其他 shell)并执行以下操作:

  1. 将 DIFF1 变量设置为 cat 的 diff 和 file1 的排序的输出(如果文件已排序,如果 cat 和 sort 的含义相同,则这将为空
  2. 以与 DIFF1 相同的方式设置 DIFF2 变量,但用于 file2
  3. 做一个简单的 if .. elif .. else 来检查 file1 和 file2 是否已排序,如果是,则对两者进行命令行排序

这是你要找的吗?

编辑:如果您的 sort 版本支持它,或者每个@twalberg,您可以这样做:

if ! sort -c file1.txt
then echo 'file1 is not sorted'
elif ! sort -c file2.txt
then echo 'file2 is not sorted'
else
sort -m file1.txt file2.txt
fi
于 2013-08-07T13:31:17.757 回答