目录
【转】linux下awk内置函数的使用(split/substr/length)
一、字符串分割
1、awk分割
把 ceph_12.2.1.centos.x86_64.tar.gz-2021-10-08-08后面的2021-10-08-08按“-”分割,取最后一个数字。
#split($1, arr, "-") ,把第一列,以“-”为分割符分割,把分割得到的结果放入arr数字中。(arr数组从1开始)
echo "ceph_12.2.1.centos.x86_64.tar.gz-2021-10-08-08"|awk '{split($1, arr, "-"); print arr[5]}'
#注意split是awk的内置函数,更多见文章末尾
2、利用shell 中 变量 的字符串替换成空格分割
原理:
${parameter//pattern/string}
用string来替换parameter变量中所有匹配的pattern
参考文章: Shell_Shell 脚本中字符串的相关操作_迎难而上-CSDN博客
string="hello,shell,split,test" 中的“,”替换成空格后赋值给array 就成了数组赋值
#!/bin/bash
string="hello,shell,split,test"
array=(${string//,/ })
for var in ${array[@]}
do
echo $var
done
3、设置分隔符,通过 IFS 变量
原理
自定义IFS变量, 改变分隔符, 对字符串进行切分
参考文章:
Shell中的IFS解惑_Simple life-CSDN博客
#!/bin/bash
string="hello,shell,split,test"
#对IFS变量 进行替换处理
OLD_IFS="$IFS" #保存当前shell默认的分割符,一会要恢复回去
IFS="," #将shell的分割符号改为,“”
array=($string) #分割符是“,”,"hello,shell,split,test" 赋值给array 就成了数组赋值
IFS="$OLD_IFS" #恢复shell默认分割符配置
for var in ${array[@]}
do
echo $var
done
4、利用tr 指令实现字符替换
原理
由于只是对单个字符进行的替换,则可以用 echo args | tr "oldSpilt" "newSpilt" 的方式实现。
r 指令讲解
背景介绍
tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
语法
tr(选项)(参数)
选项
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所