bash处理字符串

# 1. 取字符串的子串, 比如说从TIME_NOW分别取出日期和时间
DATE_TODAY="${TIME_NOW:0:8}"    # ${var:beg_pos:sub_str_length}, beg_pos是子串的起始位置(从0开始), sub_str_length为子串长度
TIME_TODAY="${TIME_NOW:8:6}"
# 或者
TIME_TODAY="${TIME_NOW:8}"      # sub_str_length为0表示到源字符串的结尾

# 取FILE_NAME中的文件名world.txt(不包括路径), 很多童鞋会马上想到basename, 或者一些类似于正则匹配的操作

${FILE_NAME##*/}                # 相当于basename ${FILE_NAME},即删除按从左至右,匹配一直到最后一个/之间的子串

${FILE_NAME%/*}                 # 相当与dirname, 即删除按从右至左方向开始,匹配到第一个/之间的子串

${FILE_NAME#*/}                 # 从左至右, 删除第一个/及左边的子串

${FILE_NAME%%/*}                # 从右至左, 删除至最后一个/及右边的子串

# 2. 字符串替换

${FILE_NAME/world.txt/hello.txt}    # 把第一个world.txt替换成hello.txt
${FILE_NAME//a/A}                   # 把所有的a替换成A

# 3. 计算字符串长度
${#FILE_NAME}                   # 计算FILE_NAME的长度

ARRAY=(abc defg hijklmn)
${#ARRAY}                       # 计算这个数组的维数
${#ARRAY[2]}                    # 计算这个数组第三个元素的长度

时间: 2024-08-10 21:28:59

bash处理字符串的相关文章

*Bash:字符串替换。

我们在编写bash脚本的时候,经常需要替换掉字符窗中特殊的字符,我们看看有几种方法可以实现. 最常用的方法是使用sed命令.例如 [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed "s/\//\\\\\//g" This is a \/ and you will know \/ 但是相当复杂,应为在替换部分要使用双反斜杠,"\\

深入理解bash及字符串的处理

1.bash的内置变量: PATH PS1 HOSTNAME UID HISTFILE HISTEILESIZE HISTCONTROL $BASH:bash二进制程序文件的路径 $BASH_SUBSHELL:子shell的层次 $BASH_VERSION $EDITOR:默认编辑器 $EUID:有效的用户ID $UID:当前用户的ID号 $FUNCNAME:当前函数的名称 $GROUPS:当前用户显示的组 $HOME:当前用户的家目录 $HOSTTYPE:主机架构类型,用来识别系统硬件 $MA

bash颜色显示方案、bash配置文件及bash变量字符串处理

bash颜色的显示规则: 调用了ASCII编码对于颜色的设置方案: Ctrl键:\033 [:控制字符和颜色代码之间的分隔符: 所有的颜色代码都应该使用m结尾 颜色代码: 0:表示关闭颜色显示属性,恢复为黑白色: 1:加粗显示文本字符: 4:为文本字符添加下划线标识: 5:使文本字符闪烁: 7:将文本字符的背景颜色和前景颜色交换: 8:将文本字符的背景颜色设置为与前景色相同: 30-39:设置文本字符的前景色,38,39为保留暂时未被使用: 30为灰色:31为红色:32为绿色:33是黄色:34为

bash:裁剪字符串 ${var:3:2}

1)按照index和长度裁剪变量字符串var=foobar echo ${var:3} -------bar echo ${var:3:2} -------ba 从index为3开始,取两个echo ${var: -4} 2)使用模式裁剪字符串 6 phone=555-456-1414 7 echo ${phone#*-} 456-1414 从开头匹配 8 echo ${phone##*-} 1414 贪婪 9 echo ${phone%-*} 555-456 从结尾匹配 10 echo ${p

Bash Shell字符串操作

转自:http://my.oschina.net/aiguozhe/blog/41557,并对内容作了验证修改. 1. 取长度 str="abcd" expr length $str # 4 echo ${#str} # 4 2.查找子串的位置 貌似也只有单个字符的时候可用.str="abc" expr index $str "a" # 1 expr index $str "b" # 2 expr index $str &qu

Linux Bash Shell字符串抽取、按列合并和格式化输出

需求来源:默认的ip link show命令输出会输出系统中已经存在的网卡(包括虚拟网卡)的名称.MAC地址.端口状态等信息,但也夹杂着一些无用的信息,此次的字符串操作就是将这些信息中的网卡名称.MAC地址.端口状态取出来. 涉及到的知识包括:常用的字符串的处理工具awk.sed.cut等的用法,paste按列合并,printf格式化输出等. 例如原输出信息为: 现在要把上图中红色框内的信息全部提取出来,但难点在于ip link show命令的默认输出会将MAC地址打印在下一行,导致普通的awk

Bash:字符串操作

参考:http://blog.csdn.net/finewings/article/details/5718133 字符串提取 去掉指定前缀 ${varible#*string}               从左往右,删除最短的一个以string结尾的子串,即截取第一个string子串之后的字符串 例如在集群中服务器的主机名一般都是node000,node001,node002之类的有时我们只想提取这个数字编码ID就可以像如下这样: [email protected]:~$ hn=$(hostn

bash数组和字符串处理、yum命令详解及编译安装

8月22号主要内容: 一.bash中的数组 二.bash中字符串处理 三.高级变量及配置用户环境 四.yum详解 五.编译安装 一.bash中的数组 1.数组的组成和申明 (1) 数组:存储多个元素的连续的内存空间,相当于多个变量的 集合. (2) 组成:数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式 ,即为关联索引,bash4.0版本之后开始支持. bash的数组支持稀疏格式(索引不连续) (3) 申明数组: declare -a ARRAY

Bash编程之数组和字符串处理

目录 笔记日期20180405 数组 声名(创建)数组declare -a ARRAY_NAME 数组元素的赋值ARRAY_NAME=("VAL1" "VAL2" "VAL3"...) 引用数组元素:${ARRAY_NAME[INDEX]} bash的字符串处理工具 字符串切片${var:offset:number} 基于模式取字串${var#*word} 查找替换变量的值${var/pattern/match} 查找并删除变量的某些字符${va