在bash shell 上如何按字母顺序比较两个字符串 ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在bash shell 上如何按字母顺序比较两个字符串 ?相关的知识,希望对你有一定的参考价值。

我有个任务,就是找出所有相同的文件,删除其中一个,但是必须按字母顺序删除,例如Abc, Biu 是相同内容的文件,就删除B保留A, 又例如, Biu, biu, 那就删除biu保留 Biu, 的问题是我怎么去比较这些文件名呢 ?

参考技术A 文件的选择貌似是按ASCII的数值,删掉文件名ASCII最大的那个文件,无论几个相同内容的文件先排下序,删掉最大头的 参考技术B #! / bin / sh的

[“$ 1”==“$ 2”];

回声“两个字符串是一样的!”

其他

回声“两个字符串是不同的!”
网络连接
参考技术C [[ Abc < Biu]]&&echo "Abc is smaller"||echo "Biu is smaller"
如果是变量:
[[ "$var1" < "$var2" ]]
参考技术D for i in dir
do
for j in dir
do
if [ $i == $j ];then
echo "the same file, ignore"
else
diff $i $j
if [ $? -eq 0 ]; then
# the same content
if [ $i \< $j ]; then
rm $j
fi
else
# diffentent ignore
fi
fi
done
done

如何在 PHP 中按字母顺序比较 2 个字符串?

【中文标题】如何在 PHP 中按字母顺序比较 2 个字符串?【英文标题】:How to compare 2 strings alphabetically in PHP? 【发布时间】:2010-12-08 09:37:45 【问题描述】:

标题所说的。特别是如果我有

$array1['name'] = 'zoo';
$array2['name'] = 'fox';

如何确定$array2 的名字按字母顺序排在$array1 的上方?

【问题讨论】:

您可能会发现s($array1['name'])-&gt;compareTo($array2['name'])s($array1['name'])-&gt;compareToIgnoreCase($array2['name']) 很有帮助,如this standalone library 中所示。 【参考方案1】:

使用@987654321@。如果 strcmp 的第一个参数按字典顺序小于第二个,则返回的值将为负数。如果两者相等,则返回 0。如果第一个在字典上大于第二个,则返回一个正数。

注意。您可能想使用@987654322@(string1,string2),它会忽略大小写...

【讨论】:

【参考方案2】:

您可以将这两个字符串与strcmp 进行比较:

如果str1小于str2,则返回 如果 str1 大于 str2 则为 0,如果它们相等则为 0。

【讨论】:

【参考方案3】:

我来晚了(那么我在 2009 年还不是程序员 :-) 还没有人提到这一点,但你也可以简单地使用你在数字上使用的运算符。

&lt; &gt; &lt;= &gt;= == !=

例如:

'a' &gt; 'b' 返回false

'a' &lt; 'b' 返回true

http://php.net/manual/en/language.operators.comparison.php

重要

有一个缺陷,你可以在下面的 cmets 中找到。

【讨论】:

伙计,这绝对是这个帖子的最佳答案,而且没有一个赞成票!如果您只需要比较两个字符串就可以简单地找到按字母顺序排在第一位的字符串,这绝对是更轻巧、最聪明的解决方案。然而,太愚蠢了,它几乎受伤了。 @MarcosBuarque:我很感激。我的回答晚了 8 年 :-) 按预期工作。例如,'10' &lt; '2' 的计算结果为 false,即使字符串 '10' 应该在 '2' 之前进行比较,如果您比较 按字母顺序(这就是问题所在)。这是因为每当字符串看起来像整数时,PHP 都会自动将它们转换为整数并按数字而不是按字母顺序进行比较。如果您的目标是真正按字母顺序比较,您应该按照建议使用strcmp()【参考方案4】:

我经常使用natsort (Natural Sort),因为我通常只想保留数组以供以后使用。

例子:

natsort($unsorted_array);

var_dump($usorted_array); // will now be sorted.

【讨论】:

【参考方案5】:

sort

EDIT 刚刚实现了来自不同数组的值,可以先array_merge,但不确定这就是你想要的

【讨论】:

以上是关于在bash shell 上如何按字母顺序比较两个字符串 ?的主要内容,如果未能解决你的问题,请参考以下文章

从使用bash按字母顺序排序的目录中获取文件

NSArray 的值,希望按字母顺序显示在部分中。如何分配到正确的部分?

使用LINQ按字母顺序比较字符串

JS sort() 按照某个属性对数组进行排序

如何比较包含非英文字符的 unicode 字符串以按字母顺序排序?

按字母顺序比较 2 个字符串以进行排序