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

使用shell脚本根据最后一个分隔符从文件名中提取左侧和右侧

,可以通过以下方式实现:

代码语言:txt
复制
#!/bin/bash

filename="file_name.txt"
delimiter="_"

# 提取左侧
left_side=${filename%$delimiter*}

# 提取右侧
right_side=${filename#*$delimiter}

echo "左侧: $left_side"
echo "右侧: $right_side"

上述脚本中,我们首先定义了文件名和分隔符。然后使用${filename%$delimiter*}来提取左侧,${filename#*$delimiter}来提取右侧。最后通过echo语句打印出结果。

这种方法使用了shell的字符串处理功能。${var%pattern}表示从变量var的末尾开始,删除匹配pattern的最短部分。${var#pattern}表示从变量var的开头开始,删除匹配pattern的最短部分。

这种方法适用于文件名中只有一个分隔符的情况,并且分隔符只出现在文件名的最后一个位置。如果文件名中有多个分隔符,或者分隔符出现在其他位置,需要使用其他方法进行处理。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求快速创建、部署和扩展云服务器实例。适用于各种应用场景,如网站托管、应用程序部署、大数据分析等。了解更多信息,请访问腾讯云云服务器(CVM)
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,可用于存储和处理各种类型的数据,如图片、视频、文档等。适用于数据备份、静态网站托管、大规模数据存储等场景。了解更多信息,请访问腾讯云对象存储(COS)

以上是针对给定问题的完善且全面的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Shell脚本应用(shell脚本基础与shell变量)

1、shell:命令解释器 1)可支持的shell保存在/etc/shells 2)默认shell为/bin/bash 2、shell脚本编写: 1)使用vi编辑器 2)每行一条命令,依次执行 3...)赋予可执行权限(x) 3、执行方式: 1)脚本文件路径:有两种,相对绝对路径,必须有x权限 2)Sh脚本文件路径:无须x权限,相对绝对路径都可以,在子shell上 3)Source(或 .)脚本文件路径...:无须x权限,在当前sell执行 4、脚本组成: 1)脚本声明:指定脚本执行的shell,以#!...开头 2)注释信息:解释性文字,以#开头,不执行 3)可执行语句: 5、输入输出重定向管道符 输入设备:文件名/dev/stdin 编号为0 对应键盘 输出设备:文件名/dev/stdout 编号为...&>:混合输出重定向到同一文件 |:管道符,将左侧命令结果交给右侧命令执行 Awk命令:以指定的字符为分隔符,输出指定区域的信息,默认分隔符为空格 Awk -F:‘{print $1,$7}’ 6

1.7K40

shell脚本实用命令

Shell脚本应用(shell脚本基础与shell变量)发布于2018-06-20 12:49:46阅读 2520 1、shell:命令解释器1)可支持的shell保存在/etc/shells2)默认...shell为/bin/bash2、shell脚本编写:1)使用vi编辑器2)每行一条命令,依次执行3)赋予可执行权限(x)3、执行方式:1)脚本文件路径:有两种,相对绝对路径,必须有x权限2)Sh脚本文件路径...:无须x权限,相对绝对路径都可以,在子shell上3)Source(或 .)脚本文件路径:无须x权限,在当前sell执行4、脚本组成:1)脚本声明:指定脚本执行的shell,以#!...开头2)注释信息:解释性文字,以#开头,不执行3)可执行语句:5、输入输出重定向管道符输入设备:文件名/dev/stdin 编号为0 对应键盘输出设备:文件名/dev/stdout 编号为1...|:管道符,将左侧命令结果交给右侧命令执行Awk命令:以指定的字符为分隔符,输出指定区域的信息,默认分隔符为空格Awk -F:‘{print $1,$7}’6、变量分类:1)自定义变量:用户自定义2

29520

shell(一)

`和文件名之间有空格 使用此命令执行时需要注意:shell脚本内容环境当前用户环境一致。 2.2.1区别 三种方式执行脚本,除了上面的适用场景不同,还有什么区别呢?...2.3.3.1脚本文件相关的变量 符号 意义 $0 获取当前执行的shell脚本文件名 $$ 获取执行shell脚本的进程号 $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本文件名...3.3linux常见符号 3.3.1重定向 重定向大家一定并不陌生,简单做一个回顾即可。shell脚本中常用的两种重定向符号是 > >>,它们代表的都是将左侧的内容或输出结果,输入到右侧的文件。...格式: 命令1 | 命令2 管道符左侧命令1执行后的结果传递给右侧的命令2使用。...NF:输出最后一列的内容。 OFS:输出格式的列分隔符,缺省是空格。 FS:输入文件的列分隔符,缺省是连续的空格Tab 模板文件内容。

3.4K50

【趣学程序】Linux流程语句

如果不加rm -rf /upuptop 则是死循环 linux的分割 bash最终的扩展是切割扩展,其通过一个环境变量 IFS 里面定义的分隔符进行分割。默认为空格,制表符,换行符。...IFS 的定义是放的三个标识符的ASCII码,例如:我们可以通过$"\n"获去换行符的码值 在脚本,如果你修改了用完之后一定要记得改回去 可以使用 awk 命令切割字符串 练习 获取指定参数文件夹包含其子目录中最大文件..../1.jpg 循环遍历文件每一行,使用流程控制语句 # 定义一个计数器num# 打印num正好是文件行数 [root@CentOS6 shell]# vim a.txt[root@CentOS6 shell...]# cat a.txt a 1b 2c 3 shell脚本: [root@CentOS6 shell]# vim readFile.sh #!...while读取 注意子进程计数处理# 由于管道会开启左侧右侧的子进程执行程序,所以这里使用保存文件来计数export num=0rm -rf tempnumcat a.txt | while read

61710

shell脚本编程之路3

[TOC] 0x09 shell编程函数 描述:Bash(Bourne Again shell)也跟其他编程语言一样也支持函数,一般在编写大型脚本需要用到,函数可以让我们将一个复杂功能划分成若干模块,.../bin/bash -xv,其他就不用做任何操作了,这是最便捷的方法. shell切分提取 在进行切分文件名提取文件名提取文件扩展名,需要用到的几个操作符有:%、%%、#、##。.../bin/bash #提取文件名或者删除后缀 file_name="text.gif" #$VAR删除位于 % 右侧的通配符左右匹配的字符串,通配符右向左进行匹配,现在给变量 name 赋值,name...含义: $VAR 删除位于 # 右侧的通配符所匹配的字符串,通配符是左向右进行匹配。...txt  使用 ## ,取最后一个小数点的suffix(后缀名) << WeiyiGeek.名称切分案例 实际案例3: // ## 取最后 一个 / 到末尾的字符串 // # 取第一个 / 到末尾的字符串

3.3K10

--shell重定向管道符(详细介绍)

——前言—— 在Shell编程,重定向管道符是两个极其重要的概念,它们让你能够高效地管理输入输出流,并实现强大的命令组合。...重定向管道符是shell中常用的两种用于控制命令输入输出的技术,它们在shell脚本中有广泛的应用,可以提高脚本的效率灵活性。...3.管道操作 管道(pipe)操作为不同命令之间的协同工作提供了一种机制,位于管道符号“|”左侧的命令输出的结果,将作为右侧命令的输入(处理对象),同一行命令可以使用多个管道。...在 Shell 脚本应用,管道操作通常用来过滤所需要的关键信息。...又如,若要提取根分区(/)的磁盘使用率信息,可以执行以下操作,其中用到了df、grep.awk命令管道操作。

8210

在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)

配合适当的脚本,这些产品都能很好的支持类似集成环境的开发工作。 在这些产品,微软团队中年轻的Code还是很亮眼的,下面就来说说如何用vs-code来做c语言的入门开发。...在出现的列表框最上面是一个搜索框,在其中输入c++,会看到很多c/c++的插件,通常第一个出现的就是有"Microsoft"字样的c/c++插件,选择最后的Install。...开始第一个c程序 左侧窗口选择刚才你新加入Workplace的目录,在右侧的欢迎页面选择“New File”,上面的File菜单也有“New File”选项。...只要在program一节后面修改成"${workspaceFolder}/你编译后的可执行文件名"这种形式存盘就可以使用了。...vs-code的c/c++插件的调试有一个坑需要注意,就是你使用的默认shell环境必须是bash,因为这个插件依赖了大量的直接脚本来调用系统调试程序及返回运行结果。

5.4K40

在Bash如何提取子字符串

问题: 对于形如 someletters_12345_moreleters.ext 的文件名,我想提取其中的5位数字并将它们放入一个变量。...明确一下细节,一个文件名的形式是若干个字符(不包含下划线),跟着一个五位的数字,数字两边都有一个下划线,最后跟着另一组若干个字符(不包含下划线)。我想要提取这个5位数字并将它存入一个变量。...是一个文本处理工具,用于按指定分隔符截取文件的字段。...-d '_' 参数指定使用下划线字符 (_) 作为字段分隔符。 -f 2 参数表示提取第二个字段(字段索引1开始计数)。...{print $2} 是 awk 脚本的一部分,其中 $2 表示输入行的第二个字段(字段编号1开始)。

17510

常用简单命令_bash笔记2

-type f -name "*.tmp" -print0 | xargs -0 rm -f 这里的-print0xargs -0用\0作为分隔符,避免temp file.tmp之类的含有默认分隔符文件名被拆成两个参数...,默认严格按大小拆分,行可能会被截断,甚至一个汉字被拆开 生成的文件名可以手动指定,最后一个参数是前缀,默认是x,-a指定后缀长度,其它选项请查看man split 也可以按行分割文件: # 每个文件10...其它小技巧 临时文件命名 Ubuntu,Debian中有tempfile命令,用来生成临时文件名一个随机字符串),其它环境可以使用RANDOM环境变量,或者当前进程id: # 取RANDOM环境变量的值...filename:$filename # 提取扩展名 ext=${file##*.} echo ext:$ext 用法如下: # var的值删掉%右侧通配符所匹配的字符串,右边向左匹配 ${var...%.*} # %%贪婪匹配,会找出最长串,%匹配最短串 ${var%.*}# var的值删掉#右侧通配符所匹配的字符串,左向右匹配 ${var#*.} # 对应的贪婪匹配 ${var##*.}

52210

如何处理Shell脚本的特殊字符

在本教程,我们将介绍有关处理 shell 脚本特殊字符的最常见用例。首先,我们将讨论 shell 脚本的包装命令变量替换。 然后,我们将处理包含特定前缀的文件名。...之后,我们将介绍读取命令IFS变量以逐字读取字符串。 最后,我们将看到Shellcheck实用程序的运行情况,以及我们如何使用它来确保我们的脚本没有任何警告。 2....用双引号包裹替换 在 shell ,当我们为mv之类的命令指定文件名时,shell文件名之间的空格视为分隔符。因此,每个文件名将对应于磁盘上的一个单独文件或目录。...4.阅读IFS 4.1. 阅读无选项 read命令变量、文件或标准输入读取输入。当我们在不带任何选项的shell脚本使用read命令时,它会对空格、反斜杠、续行等特殊字符进行一些操作。...使用 Shellcheck 编写健壮的脚本 Shellcheck 是一个简单的实用程序,我们针对我们的 shell 脚本运行以执行分析。Shellcheck 将检查脚本的错误、警告潜在的安全漏洞。

6.9K30

linux bash shell 特殊字符大全

1.作为路径的分隔符,路径仅有一个斜杆表示根目录,以斜杆开头的路径表示根目录开始的路径; 2.在作为运算符的时候,表示除法符号。...此变量值在使用的时候,返回的是最后一个命令、函数、或脚本的退出状态码值,如果没有错误则是0,如果为非0,则表示在此之前的最后一次执行有错误。...不用文件名通配符像空白这样的分隔符。注意,这里面如果出现了八进制,十六进制等,shell会自动执行转换比较。 $[...] 词表达表示整数扩展(integer expansion)。...1.作为路径的分隔符,路径仅有一个斜杆表示根目录,以斜杆开头的路径表示根目录开始的路径; 2.在作为运算符的时候,表示除法符号。...此变量值在使用的时候,返回的是最后一个命令、函数、或脚本的退出状态码值,如果没有错误则是0,如果为非0,则表示在此之前的最后一次执行有错误。

6.5K30

shell 循环命令

脚本遇到的情况是,你将一系列值都集中存储在了一个变量,然后需要遍历变量的整个列表。...要解决这个问题,可以在 shell 脚本临时更改 IFS 环境变量的值来限制被 bash shell 当作字段分隔符的字符,比如 IFS=$'\n',这样字段分隔符就被更改为换行了。...进行此操作时,必须在文件名或路径名中使用通配符。它会强制shell 使用文件扩展匹配。文件扩展匹配是生成匹配指定通配符的文件名或路径名的过程。...只有最后一个测试命令的退出状态码会被用来决定什么时候结束循环。...控制循环 有时我们在脚本执行循环的过程,我们需要根据特定的条件来及时的退出循环去执行其他的任务,所以我们要能够对循环进行条件上的控制,shell break 命令,continue 命令能帮我们控制循环内部的情况

1.3K20

Linux基础——正则表达式

注:在 linux 系统中用环境变量 IFS 存储分隔符,但根据实际应用也可以改变 IFS 的值. 例如: ? 脚本执行结果如下: ?...如果只是显示/etc/passwd 文件的用户名登录shell, 而账户与 shell 之间以逗号分割 ? 注:awk 的总是输出到标准输出,如果想让 awk 输出到文件,可以使用重定向。...例3:如果只是显示/etc/passwd文件的UID大于500的用户名登录shell,而账户与 shell之间以逗号分割,而且在所有行添加列名 name,shell,在最后一行添加"blue,/bin...sed的输出被导入一个文件名中含有$ $的临时文件,最后这个临时文件又被移回到原来的文件。该脚本使用shift命令取得所有的文件名,用while循环逐个处理所有的文件,直至处理完为止。...注: 1、basename 命令能够路径中分离出文件名

4.3K30

Shell实用工具

Shell好用的工具: cut 使用cut可以切割提取指定列字符字节的数据 介绍 cut 译为“剪切, 切割”,是一个强大文本处理工具,它可以将文本按列进行划分的文本处理。...Shell好用的工具:sed 使用sed编辑文件替换文件的单词 编写在文件插入或修改行的sed程序 使用sed作为过滤器来过滤管道数据命令 介绍 sed(stream editor, 流编辑器)...命令行参数排列 ENVIRON 支持队列系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 -F选项 NF 浏览记录的域的个数,...根据分隔符分割后的列数 NR 已读的记录数, 也是行号 OFS 输出域分隔符 ORS 输出记录分隔符 RS 控制记录分隔符 $n $0变量是指整条记录。...sort -t " " -k2n,2 sort.txt # -t " " 代表使用空格分隔符拆分列 # -k2n,2 代表根据第2列开始到第2列结束进行数字升序, 仅对第2列排序 ?

7.8K10

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

为了方便以后工作使用复习,吐血整理记录一下学习shell脚本的笔记,看这篇文章需要对linux系统熟悉,希望对大家有所帮助! 文章目录 一、什么是shell? 为什么要学习使用shell?...Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 为什么要学习使用shell?.../bin/bash [指定告知系统当前这个脚本使用shell解释器] Shell相关指令 文件命名规范: 文件名.sh .sh是linux下bash shell 的默认后缀 Bash 常用快捷键...可是在Shell脚本,exit语句是用来退出当前脚本的。也就是说,在Shell脚本,只要碰到了exit语句,后续的程序就不再执行,而直接退出脚本。...-f 脚本文件名: sed脚本读入sed操作。awk命令的-f非常类似。 -r: 在sed中支持扩展正则表达式。

5.7K20

【说站】python分割拼接函数的介绍

# a.partition()  # 左边开始找,根据指定的分隔符,返回一个元组,元组包含:分隔符左侧内容,分隔符分隔符右侧内容 info = 'sz-18-180-12345678' result... = info.partition('-') result1 = info.partition('|')  # 字符串没有该分隔符时,则左侧是原字符串,右侧中间都是空字符串 print(result...# a.rpartition()  # 右边开始找,根据指定的分隔符,返回一个元组,元组包含:分隔符左侧内容,分隔符分隔符右侧内容 info = 'sz-18-180-12345678' result... = info.rpartition('-') result1 = info.rpartition('|')  # 字符串没有该分隔符时,则右侧是原字符串,左侧中间都是空字符串 print(result...# a.join()  # a.join()  # 使用连接符,将列表中元素拼接成字符串 names = ['Bob','Tom','Sam']  # 循环每个元素,并在元素元素之间加入连接符 names_new1

35530

大数据学习之Linux基础

一个内核对象被创建的时候,对应的文件目录也在内核对象子系统 指令集合: /bin: 存放着最常用的程序指令 /sbin: 只有系统管理员能使用的程序指令。...shell,而账户与shell之间以逗号分割,而且在所有行开始前添加列名name,shell,在最后一行添加"blue,/bin/nosh"(cut,sed) awk -F':' 'BEGIN{print...# -f 脚本文件名 awk -f awk.sh awk.txt ?...输入重定向 # 输出重定向 #语法 <<< 字符串读取输入 <<E 键盘读取输入,E表示结束符 < 文件读取输入 [root@node01 input]# read aaa <<<"HelloWord...变量 # 语法 # 本地:(图1) 当前shell拥有 生命周期随shell # 局部: 只能local用于函数 # 位置:(图2) $1,$2,${11} 脚本文件后,读取参数 # 特殊

1.3K40

linux awk命令详解

awk语言的最基本功能是在文件或者字符串基于指定规则浏览抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件的信息。 通常,awk是以文件的一行为处理单位的。...在awk,文件的每一行,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。...2.shell脚本方式 将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。 相当于shell脚本首行的:#!...shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。...数组变量一样,都是在使用时自动创建的,awk也同样会自动判断其存储的是数字还是字符串。一般而言,awk的数组用来记录收集信息,可以用于计算总和、统计单词以及跟踪模板被匹配的次数等等。

3.5K30

Shell特殊字符

若num为正数,左边0处开始;若num为负数,右边开始提取字串,但必须使用在冒号后面加空格或一个表达式或整个num加上括号,如${var: -2}、${var:1-4}或${var:(-2)} a=...路径的分隔符,路径仅有一个斜杆表示根目录,以斜杆开头的路径表示根目录开始的路径。 52 | 管道(pipe)。管道是Linux,Unix都有的概念,是非常基础,也是非常重要的一个概念。...(1)作为路径的分隔符,路径仅有一个斜杆表示根目录,以斜杆开头的路径表示根目录开始的路径;(2)在作为运算符的时候,表示除法符号。 64 () 一对小括号。主要有两种用法:(1)命令组。...括号的命令将会新开一个shell顺序执行,所以括号的变量不能够被脚本余下的部分使用。括号多个命令之间用分号隔开,最后一个命令可以没有分号,各命令括号之间不必有空格。(2)用于初始化数组。...用法主要有两个:(1)用在连接一连串的数学表达式,这串数学表达式均被求值,但只有最后一个求值结果被返回。

5.1K10
领券