bbs.ChinaUnix.net
首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


如何用sed或者awk截取长路径中的某段

  首页 » 论坛 » Shell »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

各位大虾
如我有一个路径 aaaa/bbbb/cccc/ddddd/eeeee/ffffff
我希望用正则表达式取出ffffff之前的路径~~
应该怎么写?



回复 #1 jackwenghui 的帖子

$ str="aaaa/bbbb/cccc/ddddd/eeeee/ffffff"
$ echo ${str%/*}
aaaa/bbbb/cccc/ddddd/eeeee
$ dirname $str
aaaa/bbbb/cccc/ddddd/eeeee
__________________________________
记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。



周经贴



那如果写成正则表达式应该怎么写啊?



sed -r 's/(.*)\/.*/\1/'
__________________________________
Shell初学者
シェル初心者



回复 #5 biglazybug 的帖子

假设我不知道有多少个‘/‘呢?也就是,如果能够从后向前查找,这个应该怎么写?我实验了一下,好像不行啊~~~

[ 本帖最后由 jackwenghui 于 2009-1-8 15:00 编辑 ]



echo "aa/bb/cc/dd/ee/fffff"|awk 'BEGIN{FS="fffff"}{print $1}'
__________________________________
linux:
Linux BBC.com 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007 i686 i686 i386 GNU/Linux

solaris:
SunOS s_test 5.8 Generic_117350-41 sun4u sparc SUNW,Ultra-60



回复 #6 jackwenghui 的帖子

试试看呗 写多少个不都一样吗 都是去掉最后一个斜线后的
__________________________________
Shell初学者
シェル初心者





QUOTE:
原帖由 jackwenghui 于 2009-1-8 14:56 发表
假设我不知道有多少个‘/‘呢?也就是,如果能够从后向前查找,这个应该怎么写?




awk -F\/ 'BEGIN{OFS="/"}{$NF="";print $0}'
__________________________________
linux:
Linux BBC.com 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:55:12 EDT 2007 i686 i686 i386 GNU/Linux

solaris:
SunOS s_test 5.8 Generic_117350-41 sun4u sparc SUNW,Ultra-60





QUOTE:
原帖由 haimming 于 2009-1-8 14:45 发表
周经贴


:mrgreen:
__________________________________
88,cu...


Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP