码迷,mamicode.com
首页 > 系统相关 > 详细

linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)

时间:2015-09-29 17:01:05      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:shell   字符串处理   sed   

    在学过sed、awk这类功能强大的文本流处理命令后,面对简单字符串处理,往往会忘记一种更高效简洁的方法,它就是SHELL内置的字符串处理。

1、字符串的判断与赋值。

表达式含义
${var}变量var的值,,我们常用的$var就是它的缩写


${var-DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:-DEFAULT}如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *


${var=DEFAULT}如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:=DEFAULT}如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *


${var+OTHER}如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER}如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串


${var?ERR_MSG}如果var没被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG}如果var没被设置, 那么就打印$ERR_MSG *


${!varprefix*}匹配之前所有以varprefix开头进行声明的变量
${!varprefix@}匹配之前所有以varprefix开头进行声明的变量


2、字符串操作

表达式含义
${#string}$string的长度


${string:position}在$string中, 从位置$position开始提取子串
${string:position:length}在$string中, 从位置$position开始提取长度为$length的子串


${string#substring}从变量$string的开头, 删除最短匹配$substring的子串
${string##substring}从变量$string的开头, 删除最长匹配$substring的子串
${string%substring}从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}从变量$string的结尾, 删除最长匹配$substring的子串


${string/substring/replacement}使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement}使用$replacement, 代替所有匹配的$substring
${string/#substring/replacement}如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement}如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring


当然这些只是针对单条字符串的处理,但是面对文本处理,虽然可以使用循环来达到sed的效果,但速度上来说就缺少优势了。

linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)

标签:shell   字符串处理   sed   

原文地址:http://qujunorz.blog.51cto.com/6378776/1699142

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!