首页 > 系统相关 >shell-字符串处理学习笔记一

shell-字符串处理学习笔记一

时间:2022-11-01 23:00:31浏览次数:36  
标签:shell var1 string expr 笔记 echo length 字符串 position

计算字符串长度

  • ${#string}
  • expr length "$string" string 有空格,则必须加双引号
str="hello world"
# ${#string}
len=${#string}
echo $len
11

# `expr length "$string"`
len=`expr length "$str"`
echo $len
11

获取字符的索引位置

  • expr index "$string" $substring 会将substring拆分成一个个字符,返回最先匹配的字符位置
var1="quickstart is app"
ind=`expr index "$var" start`
echo ${ind}

计算子串长度

  • expr match $string substr 子串必须从头开始匹配,否则是匹配不到的
var="quichstart is a app"
substr="app"
sublen=`expr match "$var" $substr`
echo $sublen

抽取子串

  • ${string:position} 从string的position开始
  • ${string:position:length} 从position开始,匹配长度为length
  • ${string: -position} 从右边开始匹配,冒号:-中间有空格
  • ${string:(position)} 从左边开始匹配
  • expr substr "$string" $position $length 从position开始,匹配商都为length
var1="quickstart is a app"
sub=${var1:1}
sub=${var1:1:2}
sub=${var1: -1}
sub=${var1:(-1)}
sub=`expr substr "$var1" 1 2`

命令替换

  • command
  • $(command)
# 获取系统的所有用户并输出
index=1
for user in `cat /etc/passwd | cut -d ":" -f 1`
do
  echo   "This is $index user: $user"
  index=$(($index + 1))
done

# 根据系统时间计算今年或明年
echo "This is $(date + %Y) year"  
echo "This is $(($(date + %Y) + 1)) year"

变量声明

declare和typeset命令两者等价,declare、typeset命令都是用来定义变量类型的

  • declare
    • -r 将变量设置为只读
    • -i 将变量设为整数
    • -a 将变量定义为数组
    • -f 显示此脚本前定义过的所有函数和内容
    • -F 仅显示此脚本前定义过的函数名
    • -x 将变量声明为环境变量
  • typeset

bash数学运算

  • expr $num1 operator $num2
  • $(($num1 operator $num2)) 进行加减乘除求余运算,对=和!=运算,会抛语法错误,对于逻辑运算,推荐使用expr命令

bash运算bc

  • 路径/usr/bin/bc
  • shell中使用方法echo "scale=4;32.4+32.1" | bc

标签:shell,var1,string,expr,笔记,echo,length,字符串,position
From: https://www.cnblogs.com/simple-record/p/16846386.html

相关文章

  • shell脚本:条件语句
    导图1.条件测试1.1test命令测试格式1:test条件表达式格式2:[条件表达式]1.2test操作符-d:测试是否为目录(Directory)-e:测试目录或文件是否存在(Exist)-a:测试目录......
  • 嵌入式-C语言基础:实现字符串拷贝函数
    自己实现一个字符串的拷贝函数#include<stdio.h>#include<stdlib.h>#include<string.h>char*mystrcpy(char*dest,char*src){if(dest==NULL||src==NULL)......
  • C# Linq学习笔记(一)-基础语法入门
    一、简介:Linq(语言集成查询):为C#和VisualBasic提供语言级查询功能和高阶函数API,让你能够编写具有很高表达力度的声明性代码。二、优点:1、LINQ具有语言级查询语法,切......
  • 【Java编程思想读书笔记】第五章:垃圾回收机制
    参考书目:《Java编程思想》(第四版)友链:​​【读书笔记】Java重要知识点整理与汇总​​阅读《Java编程思想》(第四版)一书收获颇多,之所以想通过用博客记笔记的方式来读书,是因为......
  • 【Java编程思想读书笔记】第二章:一切都是对象+第三章:操作符+第四章:控制执行流程
    参考书目:《Java编程思想》(第四版)友链:​​【读书笔记】Java重要知识点整理与汇总​​阅读《Java编程思想》(第四版)一书收获颇多,之所以想通过用博客记笔记的方式来读书,是因为......
  • 【Java编程思想读书笔记】第五章(补充):静态初始化与枚举类型+第六章:访问权限控制
    参考书目:《Java编程思想》(第四版)友链:​​【读书笔记】Java重要知识点整理与汇总​​一、静态初始化:结论:静态初始化执行且仅执行一次(当首次生成这个类的一个对象时,或首次访......
  • 征服C指针笔记
    征服C指针1.关于指针初步1.1指针类型定义指针类型可由函数类型、对象类型或不完全的类型派生。派生指针类型的类,称为引用类型。指针类型描述这样一个对象:该类对象......
  • python中的字符串学习
    #1.字符串的下标(索引)#取字符串中的子串print('1.字符串的下标(索引)')str1='PYTHON'print(str1[0])print(str1[-4])#2.字符串的切片起始值:终止值:步长print......
  • Linux学习笔记(第七篇)用户和组管理
    ​​Linux学习笔记(第零篇)计算机基础​​Linux学习笔记(第零篇)Linux文件系统及ShellLinux学习笔记(第一篇)零散命令Linux学习笔记(第二篇)目录操作命令Linux学习笔记(第三篇)文件操......
  • Linux学习笔记(第五篇)归档及压缩命令
    ​​Linux学习笔记(第零篇)计算机基础​​Linux学习笔记(第零篇)Linux文件系统及ShellLinux学习笔记(第一篇)零散命令Linux学习笔记(第二篇)目录操作命令Linux学习笔记(第三篇)文件操......