Chinaunix

标题: 【请教】shell字符串操作 [打印本页]

作者: phenix_yw    时间: 2012-04-07 12:24
标题: 【请教】shell字符串操作
如何从一个单词集中删除指定的单词,如
STR_ALL="Tom Jack Lily Eye"
STR_SKIP="Lily Jack"
如何从STR_ALL中剔除STR_SKIP中的字符?

作者: yinyuemi    时间: 2012-04-07 12:49
回复 1# phenix_yw
  1. for word in $STR_SKIP; do STR_ALL=${STR_ALL/ ${word}/}; done; echo $STR_ALL
  2. Tom Eye
复制代码

作者: phenix_yw    时间: 2012-04-08 11:44
回复 2# yinyuemi

有点小问题,第一个单词无法删除,如STR_SKIP="Tom Lily Jack",结果仍然是Tom Eye
   
作者: yinyuemi    时间: 2012-04-08 12:26
回复 3# phenix_yw


    STR_ALL=${STR_ALL/${word}/}
作者: jiejie455    时间: 2012-04-08 12:28
本帖最后由 jiejie455 于 2012-04-08 12:29 编辑
  1. #!/bin/bash

  2. STR_ALL="Tom Jack Lily Eye"
  3. STR_SKIP="Lily Jack"

  4. skip=(${STR_SKIP})

  5. for i in ${skip[*]}
  6. do
  7.         STR_ALL=$(sed "s/\<$i\>//g" <<<"$STR_ALL")
  8. done

  9. echo $STR_ALL
复制代码

作者: firefoxbug    时间: 2012-04-08 12:57
  1. #!/bin/bash

  2. STR_ALL="Tom Jack Lily Eye"
  3. STR_SKIP="Lily Jack"

  4. for word in $STR_SKIP       
  5. do
  6.         STR_ALL=`echo "$STR_ALL"  | sed "s/$word//g"`
  7. done

  8. STR_ALL=`echo "$STR_ALL" | tr -s ' '`
  9. echo "$STR_ALL"
复制代码

作者: jason680    时间: 2012-04-08 13:05
回复 1# phenix_yw

$ echo $STR_ALL | sed -r "s/`echo $STR_SKIP | sed 's/ /|/g'`//g;s/ +/ /g"
   
作者: sunceenjoy    时间: 2012-04-09 11:49
#!/bin/bash
STR_ALL="Tom Jack Lily Eye"
STR_SKIP="Lily Jack"
for word in $STR_ALL
do
        if ! echo $STR_SKIP | grep -q -w $word
        then
           echo -n $word" "
        fi
done
作者: Gubuntu    时间: 2012-04-10 09:13
  1. root@osssvr-1 # echo $STR_ALL | xargs -n 1 | egrep -v `echo $STR_SKIP | sed 's/ /|/g'`
  2. Tom
  3. Eye
  4. root@osssvr-1 #
复制代码

作者: Gubuntu    时间: 2012-04-10 09:14
少了一步:

root@osssvr-1 # echo $STR_ALL | xargs -n 1 | egrep -v `echo $STR_SKIP | sed 's/ /|/g'` | xargs
Tom Eye
root@osssvr-1 #




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