首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >合并文件与排序-m和给出错误,如果文件没有预先排序?

合并文件与排序-m和给出错误,如果文件没有预先排序?
EN

Stack Overflow用户
提问于 2013-08-07 21:14:35
回答 1查看 117关注 0票数 0

这里需要一些帮助。

我有两份文件,

代码语言:javascript
运行
复制
    file1.txt >
    5555555555
    1111111111
    7777777777

    file2.txt >
    0000000000
    8888888888
    2222222222
    4444444444
    3333333333

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

代码语言:javascript
运行
复制
    file-c.txt >
    0000000000
    5555555555
    1111111111
    7777777777
    8888888888
    2222222222
    4444444444
    3333333333

当它发生的时候,我需要一个错误,告诉我文件(file1和file2)没有排序,合并在排序之前无法合并文件。因此,当我运行$ sort -m file1.txt file2.txt > file-c.txt时,我必须得到一个错误,指出它不能将file1和file2合并到文件-c中,因为它们还没有排序。

希望你们能理解我:D

EN

回答 1

Stack Overflow用户

发布于 2013-08-07 21:31:18

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

代码语言:javascript
运行
复制
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和file1的比较结果的输出(如果cat和file1相同,则此变量将为空,这意味着如果文件已排序,则
  2. 以与DIFF1相同的方式设置DIFF2变量,但对于file2
  3. ,请执行简单的if ..艾丽夫..否则,要检查file1和file2是否已排序,如果已排序,则执行两个

的命令行排序

这是你要找的东西吗?

编辑:交替使用每个@twalberg如果你的sort版本支持它,你可以这样做:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18104381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档