Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1742399
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2011-09-02 18:04:12

原文地址:shell文本字符串处理 作者:rayzhang11

第一种方法:#%*,#即截取变量前的字符(左向右截取),%表示截取后面字符(右向左截取),*匹配符
var=foodforthought.jpg
${varible##*string} 从左向右截取最后一个string后的字符串
运行:echo ${var##*fo}
结果:rthought.jpg

${varible#*string}从左向右截取第一个string后的字符串
运行:echo ${var#*fo} 
结果:odforthought.jpg

${varible%%string*}从右向左截取最后一个string后的字符串
运行:echo ${var%%fo*}
结果:

${varible%string*}从右向左截取第一个string后的字符串
运行:echo ${var%fo*} 
结果:food

"*"只是一个通配符可以不要

第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。
var=cowabunga
运行:echo ${var:0:3}
结果:cow

运行:echo ${var:3:7}
结果:abunga
mytar.sh -- 一个简单的脚本

应用:[ "${1##*.}" = "tar" ]&&echo "your input is tar file"||echo "your input is not tar file"

第三种方法:awk -F 分割符号
var=account.jpg
运行:echo $var|awk -F"." '{print $2}'
结果:jpg
运行:echo $var|awk '{print substr($0,1,7)}'
结果:account

第四种方法:利用cut
echo $a|cut -b2-8
cut:对标准输入的字符串进行处理
cut -bn-m:以byte为单位,从第n个byte开始,取m个
cut -bn,m:以byte为单位,截取第n,m个byte
cut -b-n,m:以byte为单位,截取1-n,和第m个
-c:以charactor为单位
-d:指定分隔符,默认为tab
-s:使标准输入中没有delimeter
cut -f1:截取第1个域
var="-rw-r--r-- 1 root root          1 Aug 23 01:00 file"
运行:echo $var|cut -d" " -f2-4 
结果:1 root root


# 删除扩展名
运行:echo "account.doc"|sed 's/\..*//g'
结果:account
# 删除文件名
运行:echo "account.doc"|sed 's/.*\.//g'
结果:.doc
运行:ed -s file <
/somedomain/s/somedomain/newdomain/g
w
q
EOF
结果:file文件中的somedomain将被newdomain全局替换
阅读(464) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~