Chinaunix

标题: 如何比较两个字符串啊 ?谢谢 [打印本页]

作者: littletiger    时间: 2002-10-04 11:48
标题: 如何比较两个字符串啊 ?谢谢
我想在shell中完成如下的动作  :VAR1=abcd  VAR2=ef  那么按照c语言 VAR2大于VAR1了 可是我看到shell中好象只能检测这两个字符串是否匹配 而不能比较大小啊  可以吗?  要怎么做呢 ?:( 谢谢
作者: 山地獾    时间: 2002-10-04 13:04
标题: 如何比较两个字符串啊 ?谢谢
好像是不能比较大小。如果用变通的方式呢,似乎可考虑用sort等命令来组合。麻烦点儿。
作者: ssscan    时间: 2002-10-05 10:38
标题: 如何比较两个字符串啊 ?谢谢
用C自己写一个
作者: valentine    时间: 2002-10-05 20:22
标题: 如何比较两个字符串啊 ?谢谢
if [ $VAR1 = `echo "$VAR1\n$VAR2"|sort|head -1` ]
then
  echo "VAR1 is little than VAR2"
else
  echo "VAR1 is greater that VAR2"
fi

作者: binary    时间: 2002-10-06 11:05
标题: 如何比较两个字符串啊 ?谢谢
不错不错,今天加班也算有收获了
前面加一个相等时的判断,这个字符串比较函数就完整了,呵呵
作者: goodboy    时间: 2002-10-06 12:14
标题: 如何比较两个字符串啊 ?谢谢
good,学一招:)
作者: wstommy    时间: 2002-10-07 01:59
标题: 如何比较两个字符串啊 ?谢谢
经典。。。。。。。。。。。我也学了一招啊
作者: 山地獾    时间: 2002-10-07 09:59
标题: 如何比较两个字符串啊 ?谢谢

作者: unixtomlee    时间: 2002-10-08 09:35
标题: 如何比较两个字符串啊 ?谢谢
不错,厉害
作者: bjchenxu    时间: 2002-10-08 16:26
标题: 如何比较两个字符串啊 ?谢谢
实际上是利用了sort的排序功能,高
作者: 山地獾    时间: 2002-10-10 21:27
标题: 如何比较两个字符串啊 ?谢谢
发现新问题:sort 排序时并不时按ascii值时行排序的,将sort的所有选项都试过了,也没能得到按ascii进行排序的结果。
迷惑!!!!
谁给解释并解决一下?
先谢了!

作者: unixkiller    时间: 2002-10-11 13:14
标题: 如何比较两个字符串啊 ?谢谢

作者: littletiger    时间: 2002-10-15 10:33
标题: 如何比较两个字符串啊 ?谢谢
好多天没有来了  谢谢大家 看来还要劳烦斑竹了
作者: valentine    时间: 2002-10-15 11:48
标题: 如何比较两个字符串啊 ?谢谢
下面引用由山地獾2002/10/10 09:27pm 发表的内容:
发现新问题:sort 排序时并不时按ascii值时行排序的,将sort的所有选项都试过了,也没能得到按ascii进行排序的结果。
迷惑!!!!
谁给解释并解决一下?
先谢了!
sort可以照字典序排列,通常和ascii值是一致的啊.
举个例子,大家来看一下.

作者: 山地獾    时间: 2002-10-15 12:32
标题: 如何比较两个字符串啊 ?谢谢
to valentine:
例如以下两个文件a.txt和b.txt,其中括号内为行首字符的16进制ascii码,b.txt由a.txt排序所得,即sort a.txt >b.txt。可以看出,b.txt的内容并不是按ascii码内容从小到大排列的。

a.txt的内容:
(20 空格)
(09 tab)
_(5f)
-(2d)
1(31)
a(61)
A(41)

b.txt的内容:
(09 tab)
(20 空格)
A(41)
a(61)
1(31)
-(2d)
_(5f)

备注:测试环境为sco504。
又:informix排序时是按ascii值大小进行的,而c语言之strcmp好像也是按ascii值的大小进行比较。
作者: valentine    时间: 2002-10-15 13:58
标题: 如何比较两个字符串啊 ?谢谢
[这个贴子最后由valentine在 2002/10/16 09:52am 编辑]
下面引用由山地獾2002/10/15 12:32pm 发表的内容:
to valentine:
例如以下两个文件a.txt和b.txt,其中括号内为行首字符的16进制ascii码,b.txt由a.txt排序所得,即sort a.txt >b.txt。可以看出,b.txt的内容并不是按ascii码内容从小到大排列的。
a.txt的内容 ...
对于字母,数字,空格和tab,如果设置正确的LC_CTYPE,sort的结果和ASCII序是一致的.
sco下试一下en_US.ascii.
作者: 山地獾    时间: 2002-10-15 14:56
标题: 如何比较两个字符串啊 ?谢谢
to valentine:非常感谢!
如您所言,LC_CTYPE=en_US.ascii&#59;export LC_CTYPE&#59;sort a.txt >b.txt,b.txt果然按ascii值进行排序。
作者: 山地獾    时间: 2002-10-15 15:02
标题: 如何比较两个字符串啊 ?谢谢
这个贴子有两个知识点,一个技巧,因此建议版主盖个章
作者: valentine    时间: 2002-10-15 17:12
标题: 如何比较两个字符串啊 ?谢谢
俺还以为盖过了呢.
作者: littletiger    时间: 2002-10-16 09:12
标题: 如何比较两个字符串啊 ?谢谢
在solaris8 sparc 上实验通过 谢谢大家和斑竹& 山地獾      


作者: jazy    时间: 2002-10-16 12:56
标题: 如何比较两个字符串啊 ?谢谢
不错,问题虽小,却处理的很灵活!
作者: 55392806    时间: 2002-10-17 17:40
标题: 如何比较两个字符串啊 ?谢谢
我不懂哦,
作者: dzzthx    时间: 2003-01-03 12:02
标题: 如何比较两个字符串啊 ?谢谢
valentine好样的。
我也学了一着!这个办法真好极了!
作者: hbczjzc    时间: 2003-01-03 13:48
标题: 如何比较两个字符串啊 ?谢谢
valentine 真乃高人也。呵呵。比其他的版主强多了,解决了很多实际问题。
佩服呀佩服。
作者: nkliyong    时间: 2003-01-03 13:51
标题: 如何比较两个字符串啊 ?谢谢
其他问题俺不懂,但
俺看第一个问题其实比较简单
expr $var1 \> $var2 > /dev/null
作者: laoxia    时间: 2003-01-03 16:07
标题: 如何比较两个字符串啊 ?谢谢
是啊,俺也学到东西了

不过就楼主文题而言, expr  $VAR1  \<  $VAR2 不就解决乎?

说错了大家打俺
作者: valentine    时间: 2003-01-05 11:15
标题: 如何比较两个字符串啊 ?谢谢
下面引用由laoxia2003/01/03 04:07pm 发表的内容:
是啊,俺也学到东西了
不过就楼主文题而言, expr  $VAR1  \<  $VAR2 不就解决乎?
说错了大家打俺
没错啊,是用expr比较简单
不知啥时候大家都喜欢走弯路了,hehe


作者: lxbcd    时间: 2003-12-11 15:56
标题: 如何比较两个字符串啊 ?谢谢
  
test  $VAR1  \<  $VAR2




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2