亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 求助:比較兩個字符串,輸出從起始位置起到第一個不相同的字符之間的字符串 [打印本頁]

作者: smlzyc    時間: 2012-02-15 14:26
標(biāo)題: 求助:比較兩個字符串,輸出從起始位置起到第一個不相同的字符之間的字符串
本帖最后由 smlzyc 于 2012-02-15 14:27 編輯

比如
s1=/home/zzz/aaa/1.log
s2=/home/zzz/aaa/2.log

比較后,期望輸出:/home/zzz/aaa/

多謝。!
作者: yangkyo821    時間: 2012-02-15 14:54
本帖最后由 yangkyo821 于 2012-02-15 15:11 編輯
  1. for((i=1;i<${#s1};i++))
  2. do
  3.     if [ "${s1:0:$i}" != "${s2:0:$i}" ]; then
  4.     echo "${s1:0:$((i-1))}"
  5.     break
  6.     fi
  7. done
  8. echo $s1
復(fù)制代碼

作者: yinyuemi    時間: 2012-02-15 15:00
本帖最后由 yinyuemi 于 2012-02-17 08:54 編輯

回復(fù) 1# smlzyc
  1. sed -n 's,\(.*\).*\1.*,\1,p' <<<${s1}${s2}
  2. /home/zzz/aaa/
復(fù)制代碼
另見8樓的jason680代碼
作者: abc163635    時間: 2012-02-15 17:32
本帖最后由 abc163635 于 2012-02-15 17:32 編輯
  1. #!/bin/bash
  2. s1=/home/zzz/aaa/1.log
  3. s2=/home/zzz/aaa/2.log
  4. for((i=0;i<=${#s1};i++))
  5. do
  6.         if [ "${s1:0:$i}" != "${s2:0:$i}" ] ; then
  7.                 break
  8.         fi
  9. done
  10. flag=$(($i-1))
  11. echo ${s1:0:$flag}
復(fù)制代碼

作者: zooyo    時間: 2012-02-15 19:58
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: zooyo    時間: 2012-02-15 20:02
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: qpengf    時間: 2012-02-16 15:46
回復(fù) 3# yinyuemi


    您的解決方案總是那么巧妙,您能解釋一下嗎?這里的,是替換命令的分隔符嗎,一般這個分隔符是/,順便簡單解釋下<<<的用法吧,
多謝
作者: yinyuemi    時間: 2012-02-17 05:58
回復(fù) 7# qpengf

man bash

    '<<<' #  Here Strings

sed :

sed 's///' 中的'/' 可以用 ',' 或其他任意不影響替換結(jié)果的字符,如#等.


作者: jason680    時間: 2012-02-17 08:38
回復(fù) 3# yinyuemi

it has some bug ...

$ s1=/home/test
$ s2=123
$ sed -n 's,\(.*\).*\1.*,\1,p' <<<${s1}${s2}
/
$ s2=/home
$ sed -n 's,^\(.*\).*\\n\1.*,\1,p' <<<${s1}"\n"${s2}
/home
$ s2=123
$ sed -n 's,^\(.*\).*\\n\1.*,\1,p' <<<${s1}"\n"${s2}

   
作者: yinyuemi    時間: 2012-02-17 08:53
回復(fù) 9# jason680


    Thanks for debugging!
作者: qpengf    時間: 2012-02-20 14:25
學(xué)習(xí),學(xué)習(xí)了




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2