LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 860|回复: 7

从一个字符串中取前5码,有多少种方法?[基本解决]

[复制链接]
发表于 2004-4-18 14:30:47 | 显示全部楼层 |阅读模式
不一定是前5码了,例如第3-7之间的字符
我用的是:
expr substr $str 1 5
请问还有其他方法么?
发表于 2004-4-18 14:37:41 | 显示全部楼层
echo $str|awk '{print substr($0,1,5)}'
echo $str|sed 's/\(.....\).*/\1/' or echo $str|sed 's/\(^.\{5\}\).*/\1/'
echo $str|cut -c1-5
echo ${str:0:5}
echo $str|grep -o '.....' #有问题 ;)
ps:grep也可以,不过要指明起始字符
/home/javalee/test#echo abcdefghijlk|grep -o 'b[a-z]\{5\}'
bcdefg
/home/javalee/test#echo abcdefghijlk|grep -o 'b[a-z]\{4\}'
bcdef
/home/javalee/test#echo abcdefghijlk|grep -o 'b[a-z]..'
bcde
/home/javalee/test#echo abcdefghijlk|grep -o 'b[a-z]...'
bcdef
 楼主| 发表于 2004-4-18 14:46:35 | 显示全部楼层
第3个用起来没问题,前两个有错误:
cpy-1# set str = "adsfjklj"
cpy-1# echo $str|awk `{print substr($0,1,5)}`
Badly placed ()'s
awk: Usage: awk [-Fc] [-f source | 'cmds'] [files]
cpy-1# echo $str|sed `s^(.....\).*^1/`
Too many ('s
cpy-1#

四也有问题:
cpy-1# echo ${str:0:5}
Variable syntax

中间是分号还是冒号啊?
发表于 2004-4-18 14:51:28 | 显示全部楼层
最初由 wdl36 发表
第3个用起来没问题,前两个有错误:
cpy-1# set str = "adsfjklj"
cpy-1# echo $str|awk `{print substr($0,1,5)}`
Badly placed ()'s
awk: Usage: awk [-Fc] [-f source | 'cmds'] [files]
cpy-1# echo $str|sed `s^(.....\).*^1/`
Too many ('s
cpy-1#

  1. awk:
  2. /home/javalee#echo "asdfghh"|awk '{print substr($0,1,5)}'
  3. asdfg
  4. /home/javalee#awk --version
  5. GNU Awk 3.1.1
  6. Copyright (C) 1989, 1991-2002 Free Software Foundation
  7. sed:
  8. /home/javalee#echo asdfsf|sed 's/\(^.\{5\}\).*/\1/g'
  9. asdfs
  10. /home/javalee#sed --version
  11. GNU sed version 3.02
  12. cut:
  13. /home/javalee#echo asdfsdf|cut -c3-7
  14. dfsdf
复制代码
 楼主| 发表于 2004-4-18 14:55:57 | 显示全部楼层
我的是:GNU Awk 3.1.0
Copyright (C) 1989, 1991-2001 Free Software Foundation.

差了一点....
 楼主| 发表于 2004-4-18 14:58:17 | 显示全部楼层
我错了!
符号用错了1!!!
sorry~~~~~~~~~~~
没问题的!
3.1.0 也是一样的!!!
多谢指点!
 楼主| 发表于 2004-4-18 14:59:20 | 显示全部楼层
关于sed的命令看的不太懂
哪里有sed的详细介绍呢?
最好要中文的....呵呵
发表于 2004-4-18 15:09:52 | 显示全部楼层
最初由 wdl36 发表
关于sed的命令看的不太懂
哪里有sed的详细介绍呢?
最好要中文的....呵呵

shell版里有! 搜索一下吧~~~ OK?
第四个是冒号
详见:${...}用法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表