首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在shell脚本中使用不同类型的分隔符提取文件名的子串?

在shell脚本中,可以使用不同类型的分隔符来提取文件名的子串。以下是几种常见的方法:

  1. 使用"/"作为分隔符:
  2. 使用"/"作为分隔符:
  3. 这里使用了${filepath##*/}来提取文件名,其中##*/表示删除最长匹配的*/,即删除最后一个/及其之前的内容。
  4. 使用"."作为分隔符:
  5. 使用"."作为分隔符:
  6. 这里使用了${filepath%.*}来提取文件名,其中%.*表示删除最短匹配的.*,即删除最后一个.及其之后的内容。
  7. 使用自定义分隔符:
  8. 使用自定义分隔符:
  9. 这里使用了自定义分隔符IFS,将$filepath按照/进行分割,并存储到数组parts中。然后通过${parts[-1]}来获取最后一个元素,即文件名。

以上是几种常见的在shell脚本中使用不同类型的分隔符提取文件名的子串的方法。根据具体的需求和场景,选择适合的方法即可。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云Shell脚本开发:https://cloud.tencent.com/product/cvm/developer-tools/shell
  • 腾讯云云服务器CVM:https://cloud.tencent.com/product/cvm
  • 腾讯云对象存储COS:https://cloud.tencent.com/product/cos
  • 腾讯云函数计算SCF:https://cloud.tencent.com/product/scf
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux bash shell 特殊字符大全

在参数替换中为字符变量赋值,在重定向操作(>)中,把一个文件长度截断为0(:>>这样用时候,目标存在则什么都不做),这个只能在普通文件中使用,不能在管道,符号链接和其他特殊文件中使用; 5....由一组圆括号括起来命令是命令组,命令组中命令实在shell(subshell)中执行。...不用文件名通配符和像空白这样分隔符。注意,这里面如果出现了八进制,十六进制等,shell会自动执行转换比较。 $[...] 词表达表示整数扩展(integer expansion)。...在参数替换中为字符变量赋值,在重定向操作(>)中,把一个文件长度截断为0(:>>这样用时候,目标存在则什么都不做),这个只能在普通文件中使用,不能在管道,符号链接和其他特殊文件中使用; 5....不用文件名通配符和像空白这样分隔符。注意,这里面如果出现了八进制,十六进制等,shell会自动执行转换比较。 $[...] 词表达表示整数扩展(integer expansion)。

6.6K30

Bash Shell

使用方法为:type [选项] 命令名type命令中常用选项:-a ~ 列出所有包含指定命令名命令、也包括别名(alias)-p ~ 显示完整文件名(外部命令),或者为内部命令-t ~ 显示文件类型...这些变量用户可以直接使用,PATH变量。要提取一个变量值,需要在变量名前冠以$符号。大括号{}用法:利用大括号可以减轻工作负担。...shell变零特性及显示:shell变量特性如下:shell变量分为两种类型,即局部变量和环境变量,局部变量只能在当前工作环境(shell)中使用,环境变量即可在当前shell中使用、也会传给它所有...alias语法格式:alias别名 = 命令字符创建一个名为dir别名:alias dir = 'ls -laF'。...shell环境中使用,一旦离开了当前shell环境,该变量就失效,只有环境变量才能不仅在当期shell环境中生效、而且还可以在它所有shell中生效。

1.5K30
  • 一文掌握shell脚本基本语法

    ,就是告知系统文件执行都需要指定一个解释器。指定一个文件类型特殊标记。占用 2 字节 。 1.1 脚本解释器 shell脚本都是以 #!开头,告知系统该文件执行需要一个解释器。...02. shell中特殊字符 特殊字符 功能 说明 注意 # 1.注释 2.声明命令解释器类型 3.某些特定模式匹配操作使用 1.注释方面:一般是行首中以 #作为开头 2.声明解释器类型一般是在脚本第一行...substring' # 详细实例 ---- 未进行shellcheck检查 str="SolerHO123456" echo $(expr index "$str" H) # 结果为 6 7.3 提取...语法 说明 ${string:position} 在string中从位置position开始提取 ${string:position:length} 在string中从位置position开始提取...length长度字串 7.4 截除 [截除.png] 7.5 替换 [替换.png] 7.5 8.

    4K01

    python之调用系统命令 原

    使用os.popen调用test.sh情况:python调用Shell脚本,有两种方法:os.system(cmd)或os.popen(cmd),前者返回值是脚本退出状态码,后者返回值是脚本执行过程中输出内容...如果参数shell设为true,程序将通过shell来执行。 参数cwd用于设置进程的当前目录。 参数env是字典类型,用于指定子进程环境变量。...("ls") commands.getstatus("ls") 二、OS模块 1.os os 模块类型 c操作 s说明 b备注 分隔符 os.sep 可以取代操作系统特定路径分割符 文件夹分隔符...os.pathsep 扩展名分隔符,windows中是 ; os.linesep 字符给出当前平台使用行终止符。...换行分隔符,windows中是 \r\n 获得基本信息 os.name 字符指示你正在使用平台。

    2.2K40

    shell学习教程(超详细完整)

    中有很多类型shell,不同shell具备不同功能,shell还决定了脚本中函数语法,Linux中默认shell是 / b a s h / b a s h ( 重 点 ) \color{#FF3030.../bin/bash [指定告知系统当前这个脚本要使用shell解释器] Shell相关指令 文件命名规范: 文件名.sh .sh是linux下bash shell 默认后缀 Bash 常用快捷键...(推荐使用) () 用于一命令执行时,()中命令会在Shell中运行 {} 用于一命令执行时,{ }中命令会在当前Shell中执行。也可以用于变量变形与替换。 [ ] 用于变量测试。...~ B 判断字符A中是否不包含能匹配B表达式字符 动作(Action) : 格式化输出 流程控制语句 常用参数: -F 指定输入时用到字段分隔符 -v 自定义变量...~B 判断字符A中是否不包含能匹配B表达式字符 正则表达式 /正则/ 如果在”//”中可以写入字符,也可以支持正则表达式 BEGIN BEGIN是awk保留字,是一种特殊条件类型

    6.2K21

    Linux Awk用法总结

    变量赋值必须位于脚本参数后面,与文件名参数无先后顺序要求,但是位于不同位置赋值它执行时机是不同。...表达式(Expressions) 表达式可以由常量、变量、运算符和函数组成,常数和变量值可以为字符和数值。 Awk中变量有三种类型:用户定义变量,内置变量和字段变量。...,默认为空白 NF 每个记录中字段个数 RS 记录分隔符,默认为回车 OFS 输出时字段分隔符,默认为空白 ORS 输出时记录分隔符,默认为回车 RLENGTH 被match函数匹配长度...,后者表示匹配位于目标字符起始下标。...例如: substr substr(s, m[, n]) 描述:返回从位置m开始,长度为n,其中位置从1开始计算,如果未指定n或者n值大于剩余字符个数,则一直到字符末尾为止。

    6.6K40

    写好Shell脚本那些不得不知道细节

    shell变量能够而且只能存储正文字符,即它只有一种类型变量即变量。但从赋值形式上看,则可以分成四种类型变量或变量形式。变量名字必须以字母或下划线开头,可以包括字母、数字和下划线。...命令行shell过程名本身被指定为位置变量0,即"1,……,第九个命令参数为 9。...: "$#" 记录传递给shell自变量个数 "$*" 传递给脚本或函数所有参数 $* 和 $@ 都表示传递给函数或脚本所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n"...会以空格、制表符、换行符作为分隔符,但遇到以上情况时,需要使用IFS来自定义shell分隔符。.../sh和source运行脚本区别 shFileName或 bashFileName 作用:打开一个 shell 来读取并执行FileName 中命令。

    1.9K10

    Linux:awk命令详解

    ,然后调用,: awk -f awk-script-file input-file -f 选项指明在文件 awk-script-file awk 脚本,input-file 是使用 awk 进行浏览文件名...2. awk 脚本: awk 脚本由各种操作和模式组成,根据分隔符(-F 选项),默认为空格,读取内容依次放置到对应域中,一行一行记录读取,直到文件尾 2.1.  ...AGRV 命令行参数排列 NR 已读记录数 ENVIRON 支持队列中系统环境变量使用 OFS 输出域分隔符 FILENAME awk 浏览文件名 ORS 输出记录分隔符 FNR 浏览文件记录数...RS 控制记录分隔符 FS 设置输入域分隔符- F 选项 NF 浏览记录域个数 2.5. awk 操作符: 在 awk 中使用操作符,基本表达式可以划分成数字型、字符型、变量型、域及数组元素...      sub(r,s)   从$0中最左边最长中用s代替r(只更换第一遇到匹配字符)      substr(s,p)         返回字符s中从p开始后缀部分      substr

    3.9K70

    如何处理Shell脚本特殊字符

    概述 有时,当我们编写 shell 脚本时,我们必须处理特殊字符,空格、符号和其他非 ASCII 字符。这些字符可能无法直接由 shell 脚本和其他工具处理。...用双引号包裹替换 在 shell 中,当我们为mv之类命令指定文件名时,shell文件名之间空格视为分隔符。因此,每个文件名将对应于磁盘上一个单独文件或目录。...假设我们有一个变量 整体取HOME变量值 使用空格作为分隔符将字符拆分为字段 将每个以空格分隔字段视为一个可以由 shell 扩展 glob 在我们例子中,我们对字符 上下文感兴趣——变量周围双引号产生一个字符...,因为我们在字符 上下文中使用了双引号。...当我们在不带任何选项shell脚本中使用read命令时,它会对空格、反斜杠、续行等特殊字符进行一些操作。 例如,让我们在终端中编写一个简单命令来读取一个字符,然后打印它行: #!

    7.5K30

    shell脚本编程之路1

    ,必要时候shell脚本也可以定义环境变量; shell变量:由shel程序设置特殊变量,其包括了环境变量已经局部变量,这些变量保证了shell正常运行; 注意事项: Linux中默认变量类型都是字符类型不含有其他类型...四种模式字符提取和替换: #第一种:对大括号中以逗号分割文件列表进行拓展。 touch {a,b}.txt 结果为a.txt b.txt。...${var##pattern} #如果是,就从命令行把variable中内容去掉 左边 最长匹配模式 # 字符提取和替换 ${var:num} #shell在var中提取第num...表示从$var字符第$num1个位置开始提取长度为$num2,不能为负数。...---- (3)用户自定义变量 字符shell编程中最常用最有用数据类型(除了数字和字符,也没啥其它类型好用了),字符可以用单引号也可以用双引号,也可以不用引号。

    2.7K20

    2024年3月份最新大厂运维面试题集锦(运维15-20k)

    脚本中检查并使用可用命令和工具版本。 使用条件语句处理不同环境中可能差异。 72. 解释什么是Shell以及如何在Shell脚本中创建它。...答案: Shell是当前Shell一个独立副本,它继承了父Shell环境(变量等),但任何在Shell中做出更改(变量赋值)不会影响父Shell。...如何在Shell脚本中操作字符?...答案: Shell脚本提供了多种字符操作功能,包括: 获取字符长度:${#string} 提取字符:${string:position:length} 查找和替换:${string/search...还可以使用test命令或[ ]来检查文件和目录状态(如是否存在)。 77. 如何在Shell脚本中使用正则表达式?

    2K10

    Shell编程】快速入门变量、字符、传递参数

    2 双引号 3 获取字符长度 4 提取字符 5 查找字符 1.5 传递参数 1.参数示例 2.特殊字符 1.1 简介 Shell 是一个用 C 语言编写程序,通过 Shell 用户可以访问操作系统内核服务...有效 Shell 变量名示例如下: 无效变量命名: 除了显式地直接赋值,还可以用语句给变量赋值,: 或 以上语句将 /etc 下目录文件名循环出来。...下面的例子尝试更改只读变量,结果报错: 运行脚本,结果如下: 1.4 字符 字符shell 编程中最常用最有用数据类型(除了数字和字符,也没啥其它类型好用了),字符 可以用单引号...3 获取字符长度 4 提取字符 substring(2) substring(2,3) 以下实例从字符第 2 个字符开始截取 4 个字符: 5 查找字符...n 代表一个数字, 1 为执行脚本第一个参数, 2 为执行脚本第二个参数,以此类推 …… 实例 以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行文件名: 1

    1.3K30

    【建议收藏系列】爆肝3w字带你理解什么叫运维~

    基本语法 变量 按照惯例,Shell变量由全大写字母加下划线组成,有两种类型Shell变量: 1.环境变量 环境变量可以从父进程传给进程,因此Shell进程环境变量可以从当前Shell进程传给fork...和C语言不同是,Shell变量不需要明确定义类型,事实上Shell变量值都是字符,比如我们定义VAR=45,其实VAR值是字符45而非整数。...基本语法 我们知道C变量和Shell脚本变量定义和使用方法很不相同,表达能力也不相同,C变量有各种类型,而Shell脚本变量都是字符。...-r, --regexp-extended 在脚本指令中使用扩展正则表达式 -s, --separate 默认情况下,sed将把命令行指定多个文件名作为一个长连续输入流。...注意如果脚本需要用到网络,则NN需设置一个比较大数字,99。 1) 将你启动脚本复制到 /etc/init.d目录下,以下假设你脚本文件名为 test。

    2.1K30

    shell语法

    declare -r 变量 删除变量 unset(类似于c++终端undef),如果一个变量被删除,后面调用时候会替换为空(NULL) 变量类型 自定义变量(局部变量):进程不能访问变量 环境变量...(全局变量):进程可以访问变量 自定义变量转环境变量 export 变量名 declare -x 变量名 此时可以在进程中使用变量 使用bash 使用bash会将原进程...,即可以使用&取值 取出字符长度 ¥后面加井号 echo ${井号name},即可以取出name长度(注意这个地方是花括号) 提取 根据下标取值 echo ${name:m:n}注意这个每一个下标前都有冒号...查看自己开了多少进程 top可以查看 按下退出 文件参数变量 在执行shell脚本时可以想脚本传递参数,$1时第一个参数,$2是第二个参数…,特殊是$0是文件名(包含路径) $#:文件传入参数个数...(不包括文件名) $*:由所有参数构成用空格隔开字符,整体为字符用双引号括起来 $@:每个参数分别用双引号括起来字符(@和*都是取所有的意思) $$:脚本当前运行进程ID $?

    12210

    命令注入限制绕过

    ``(反引号) 反引号(也称为反撇号或backtick)用于执行命令并将命令输出结果嵌入到另一个命令或上下文中,在下面的示例中演示了如何在Linux 命令行中使用反引号,其中command1和command2...,用于执行命令并将其输出结果嵌入到另一个命令或上下文中,下面是一个示例演示了如何在Linux 命令行中使用(),command1和command2是两个不同命令,通过将command2放置在 command1...$(command2) 下面给出一个具体执行示例: ()和{} 在Linux命令行中括号()和花括号{}是用来进行命令分组、shell执行或参数替换符号 1、括号() 命令分组:括号中命令会作为一个独立进程在一个...shell 中执行 变量赋值:可以将括号中命令输出结果赋值给变量 下面的示例中command1和command2是两个不同命令,通过将这两个命令放置在括号()中,它们会作为一个独立进程在一个...Field Separator"(内部字段分隔符),它用于指定命令行参数和输入流中字段(单词)之间分隔符,默认情况下其值为包含空格、制表符和换行符字符: {IFS}:{IFS}是将IFS包裹在花括号中形式

    42010

    linux awk 函数定义变量赋值,Linux中Awk定义、用法详解

    变量赋值必须位于脚本参数后面,与文件名参数无先后顺序要求,但是位于不同位置赋值它执行时机是不同。   ...表达式()   表达式可以由常量、变量、运算符和函数组成,常数和变量值可以为字符和数值。   Awk中变量有三种类型:用户定义变量,内置变量和字段变量。其中,内置变量名都是大写。...  被match函数匹配长度   RSTART   被match函数匹配位于目标字符起始下标   下面主要介绍几个比较难理解内置变量:   ARGV与ARGC   ARGV与ARGC...例如:   利用环境变量也可以将值传递给awk:   可以利用for..in循环遍历数组:   与RSTART   与RSTART都是与match函数相关,前者表示匹配长度,后者表示匹配位于目标字符起始下标...例如:   substr   substr(s, m[, n])   描述:返回从位置m开始,长度为n,其中位置从1开始计算,如果未指定n或者n值大于剩余字符个数,则一直到字符末尾为止。

    9.5K50

    Shell脚本内建命令

    将ARGs组合成一个字符,将结果作为shell输入,并执行生成命令。...declare命令(别名typeset)属shell内建命令用于申明shell变量并设置变量属性,或查看已定义shell变量和函数(弱类型,默认字符型) #语法 declare [+/-] [选项...#参数 +/-:"-"可用来指定变量属性,"+"则是取消变量所设属性; -a:将变量声明为数组类型(Array); -i:[设置值]可以是数值类型(Int),字符或运算式; -p:显示指定变量被声明得类型..."-A file":文件名选项"-f"。 "-A function":shell函数名。 "-A group":组名,选项"-g"。..."-A user":用户名,选项"-u"。 "-A variable":所有的shell变量名,选项"-v"。 "-C command":在shell中执行命令,并把其结果作为补全条目。

    1.7K10

    Shell 基础语法

    变量类型 shell 中存在三类变量: 局部变量:在脚本或命令中定义变量,仅在当前 shell 实例中有效,其他 shell 启动程序不能访问局部变量; 环境变量:所有程序(包括 shell 启动程序...:在当前脚本中后台运行最后一个进程 PID # ${?}:最后一次执行命令返回状态,0 为执行正确,非 0 为执行错误 # 测试文件名称:test.sh # 测试命令 ....() | 单组小括号 在新 shell (环境)里执行使用分号(;)隔开一组命令,且最后一个命令可以不用分号。...)) 但是 $() 不能支持全部 shell(但 bash 中是可以用),而反引号(``)基本上可以在所有 unix shell 中使用。...注:在 [[]] 中使用 是基于字符进行判断,例如 [[ 321 > 1234 ]] 输出为真,因为按照字符来判断,3 大于 1 在支持 [[]] shell 中会把它内部表达式当做一个单独元素

    1K20
    领券