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

如何在最后一次出现分隔符时获取bash中字符串的第一部分和第二部分

在Bash中,可以使用字符串分割操作来获取字符串的第一部分和第二部分。最后一次出现分隔符时,可以使用rev命令将字符串反转,然后使用cut命令获取反转后的字符串的第一部分和第二部分,最后再将它们反转回来。

以下是一个示例代码:

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

string="hello/world/123"
delimiter="/"

# 反转字符串
reversed_string=$(echo "$string" | rev)

# 获取反转后的字符串的第一部分和第二部分
first_part=$(echo "$reversed_string" | cut -d "$delimiter" -f 1 | rev)
second_part=$(echo "$reversed_string" | cut -d "$delimiter" -f 2 | rev)

echo "第一部分: $first_part"
echo "第二部分: $second_part"

运行以上代码,输出结果为:

代码语言:txt
复制
第一部分: 123
第二部分: world

这里的string变量是要分割的字符串,delimiter变量是分隔符。你可以根据实际情况修改这两个变量的值。

这种方法适用于最后一次出现分隔符时获取字符串的第一部分和第二部分。如果要获取其他部分,可以根据需要修改cut命令的参数。

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

以上是腾讯云提供的一些相关产品,可以根据具体需求选择适合的产品来支持云计算和开发工作。

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

相关·内容

linux基础命令介绍八:文本分析 awk

当pattern省略表示匹配任何字符串;当action省略表示执行'{print}';它们不可以同时省略。...对于每条记录,awk使用分隔符将其分割成列,第一列用$1表示,第二列用$2表示...最后一列用$NF表示 选项-F表示指定分隔符 输出文件/etc/passwd第一第一列(用户名)和最后一列(登录shell...判断文件/etc/passwdUID大于500登录shell是否为/bin/bash,是则输出整行,否则输出UID为0行: #注意为避免混淆对目录分隔符进行了转义 [root@centos7 ~...读取第二个文件,NR==FNR不成立,执行后面的打印命令 sub(regex,substr,string)替换字符串string(省略为$0)首个出现匹配正则regex子串substr [root...工作经常有文本分析需求,那么掌握这个命令用法将为你节省大量时间。

1.4K20

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

/bin/bash #接受用户输入 read -p '请输入需要查询用户名:' username #获取指定用户名在passwd文件中出现次数 count=$(cat /etc/passwd |...也就是说,假设in后面有三个值,for会循环三次,第一次循环会把值1赋予变量,第二次循环会把值2赋予变量,以此类推。...,所以这个命令换行不用加入“|”,就是一行命令 #这里定义了两个动作 #第一个动作使用BEGIN条件,所以会在读入文件数据前打印“这是一张成绩单”(只会执行一次) #第二个动作会打印文件第二字段和第六字段...获取第一列,第二列,第三列 ps -aux | grep watchdog | awk '{print $1, $2, $3}' 3....获取第一第一列,第二列,第三列 ps -aux | grep watchdog | awk 'NR==1{print $1, $2, $3}' 4.

5.9K20

linux bash shell 特殊字符大全

部分引用。双引号包围内容可以允许变量扩展,也允许转义字符存在。如果字符串出现双引号本身,需要转义,因此不一定双引号是成对。...此变量值在使用时候,返回最后一个命令、函数、或脚本退出状态码值,如果没有错误则是0,如果为非0,则表示在此之前最后一次执行有错误。...部分引用。双引号包围内容可以允许变量扩展,也允许转义字符存在。如果字符串出现双引号本身,需要转义,因此不一定双引号是成对。...此变量值在使用时候,返回最后一个命令、函数、或脚本退出状态码值,如果没有错误则是0,如果为非0,则表示在此之前最后一次执行有错误。...##任何在b和9之间内容(含) ##第一个是找到最短符合匹配项 ##后一个是找最大符合匹配项(贪婪匹配?) ~ 波浪号(Home directory[tilde])。

6.5K30

awk 进阶使用案例

关系表达式:可以用下面运算符表关系运算符进行操作,可以是字符串或数字比较,$2>%1选择第二个字段比第一个字段长行。 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。... awk '{print $1,$3}' test将打印test文件第一和第三个以空格分开列(域)。 域分隔符 内建变量FS保存输入域分隔符值,默认是空格或tab。...:awk '{count[$1]++} END{for(name in count) print name,count[name]}' test。该语句将打印$1字符串出现次数。...内建函数 字符串替换函数 sub函数匹配记录中最大、最靠左边字符串正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配时候。...cat /etc/shadow | awk '{sub(/^x/,"***",$1);print}' 字符串出现位置 index函数返回子字符串第一次被匹配位置,偏移量从位置1开始。

1.9K20

linux学习第二十六篇:正则介绍,grep,sed,awk命令

把test.txt第一个单词和最后一个单词调换位置 ? 11. 把test.txt中出现第一个数字和最后一个单词替换位置 ? 12....用 ‘:’ 作为分隔符,查找第一段为 ‘root’ 行,并把该段 ‘root’ 换成 ‘toor’ (可以连同sed一起使用) ? 用 ‘:’ 作为分隔符,打印最后一段 ?...用 ‘:’ 作为分隔符,打印第一段以及最后一段,并且中间用 ‘@’ 连接 (例如,第一行应该是这样形式 ‘root@/bin/bash‘ ) ?...匹配其前面的字符1次或0次 + 匹配其前面一个字符出现至少一次(在扩展正则表达式) 位置匹配 符号 含义 ^ 锚定行首 $ 锚定行尾 \<或\b 锚定词首,其后面的任意字符必须作为单词首部出现 >或...awk 合并一个文件 把两个文件第一列相同行合并到同一行。 解释:NR表示读取行数,FNR表示读取的当前行数。

3.9K60

shell脚本实例

:三个连续字符,通常有多少个. 就表示多少个连续字符。        分隔指令是有前斜线分开之前和之后两部分指令组成。第一部分是模式,第二部分指定了域或者将要显示串所在域。...第一个域......        表示连续6个字符串   第二个域.*    表示任意多个字符串   第三个域...   ...}{pNR=NR;p0=$0}' /etc/passwd  第一个命令在文件查找模式串,当处理文件每一行内容,分别在变量p0和pNR存储匹配行之前一行和该行记录数(awk内部变量NR表示当前输入行记录数... 第一server表示在整个目标文件查找项  s表示告诉ed查找第四个元素  第四个元素是第二个查找条件,限定了再次查找范围为满足第一个查找项范围  最后g表示全局替换 # ed -s /...浏览这些文件,他们从内核角度给出系统信息,他们内容基于系统资源和特性,内存、cpu等网络利用情况    以一系列数字为名字目录代表当前进程PID,这些目录文件涉及到被调用命令、执行环境、

3.2K60

sed、awk——运维必须掌握两个工具

,后面可以接字符串,而这些字符串会在新一行出现(目前上一行) p:打印,将某个选择数据打印出来。...将passwd文件包含/sbin/nologin替换为/bin/bash并打印输出 ? 将passwd文件第2行数据替换为test,注意到与s参数区别了吧 ?...在passwd文件第二行新增test字符串 ? 在passwd文件第二行插入test字符串 ? 删除passwd文件第三行至末尾行 ?...l Awk 1.强大地方 擅长对数据列进行处理,就是把数据逐行读入,以空格为默认分隔符再将每行切断,对切断部分再进行分析处理。 ? 3.举例 我们还是以/etc/passwd 文件为例。...想想日常工作如何要获取文件第几行第几列数据应该如何操作,打印passwd文件第一行与最后一行第一数据,sed跟awk结合使用啦。 ?

70660

linux实战(一)

例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。...第二条语句意思是,当到达最后一行后,G命令取出保持缓冲区行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中末尾。在这个例子中就是追加到最后一行。...简单来说awk就是把文件逐行读入,以空格为默认分隔符将每行切片,切开部分再进行各种分析处理。...RLENGTH 由match函数所匹配字符串长度。 RS 记录分隔符(默认是一个换行符)。 RSTART 由match函数所匹配字符串第一个位置。...接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作。

2.2K10

shell programming tutorial

例如: $1 表示第一个参数,$2 表示第二个参数,以此类推。 $9 以后需要用花 括号把数字括起来,第 10 个位置参量以  ${10} 方式来访问。 ?...因此在使用管道获取参数,我们一定要增加对于参数判断,或者,我们在sh和bash解释器, 增加set –o pipefail 设置,可以让管道执行结果是否成功,变得可信。...(空格,tab等),我们也可以使用IFS(内部字段分隔符)指定字符作为分隔符; 需要注意是多个空白被当做一个空白处理,当某一行某个字段不存在,这样会导致读到数据对应不到正确变量 用 perl...${#var} 返回字符串变量 var长度 ${var:m} 返回${var}从第m+1个字符到最后部分 ${var:m:len} 返回${var}从第m+1个字符开始,长度为len部分 ${...}第一次出现old ${var//old/new} 用new替换${var}中所有的old(全局替换) 字符串拼接: value1=home value2=${value1}"=" value3=

1.4K90

Linuxawk使用方法详解

第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。...任意一个部分都可以不出现在脚本,脚本通常是被单引号或双引号,例如: awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename awk "BEGIN{ i=...数字输出格式(默认值是%.6g) OFS 输出记录分隔符(输出换行符),输出用指定符号代替换行符 ORS 输出记录分隔符(默认值是一个换行符) RLENGTH 由match函数所匹配字符串长度...,替换只发生在第一次匹配发生时候。...如要在整个文件中进行匹配需要用到gsub 第二个例子在整个记录第一个域中进行匹配,替换只发生在第一次匹配发生时候。

3.5K31

常用 linux 命令集锦

-e 若字符串出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出警告声; \b 删除前一个字符; \c 最后不加上换行符号;...花括号({})不需要在程序始终出现,但它们用于根据特定模式对一系列指令进行分组。...关系表达式:可以用下面运算符表关系运算符进行操作,可以是字符串或数字比较,$2>%1选择第二个字段比第一个字段长行。 模式匹配表达式:用运算符~(匹配)和~!(不匹配)。...$ awk -F: '{print $1,$5}' test将打印以冒号为分隔符第一,第五列内容。...输出域分隔符默认是一个空格,保存在OFS$ awk -F: '{print $1,$5}' test,$1和$5间逗号就是OFS值。

4.5K10

Linux三剑客之grep,awk,sed命令必知必会

grep "linuxmi" test test1 test2 匹配文件整个单词。 默认情况下,即使在子字符串中找到了Grep,也会输出所有出现某种特定模式。...它不需要任何编译,并且用户可以使用数字函数,变量,字符串函数和逻辑运算符。 它使您能够以语句形式编写简单有效程序,以在文件搜索特定模式,并在找到匹配项执行操作。...当使用' awk ',我们将花括号括起来。 模式和动作都形成规则,整个awk程序都用单引号引起来。 如何在Linux中使用AWK命令 默认情况下,Awk命令用于打印文件内容。...让我们打印linuxmi.txt文件中行第一部分和第二部分。 linuxmi@linuxmi:~/www.linuxmi.com awk '{print 1, 注意$0输出整行。...$ NF - 打印最后一列 linuxmi@linuxmi:~/www.linuxmi.com$ awk '{print NF}' linuxmi.txt OFS - 输出字段分隔符–用于指定输出值分隔符

9.1K20

awk 简单使用教程

域(字段)awk每个非空白部分叫做域(或者字段),从左到右依次是第一个域,第二个域。$1,$2表示第一第二个域,$0表示全部域,也就是整行。...- 打印第一个和第四个列:`awk '{print $1,$4}' awk.txt`- 打印全部内容:`awk '{print $0}' awk.txt`$NF表示最后一列,$(NF-1)倒数第二列...通过为输入分隔符变量制定相应分割方式,来更好处理文本,而输出分隔符变量则可以让我们在保存处理后数据更加灵活。...,p) 返回字符串s从p开始后缀部分 substr(s,p,n)返回字符串s从p开始长度为n后缀部分使用示例:gsubawk 'gsub(/^root/,"netseek") {print...$0}' /etc/fstabindexawk 'BEGIN{print index("root","o")}' # 查询o在root字符串出现第一位置awk -F : '$1=="root"

16500

linux常用命令

一年第几周 (00..53) (以 Monday 为一周第一情形) %x : 直接显示日期 (mm/dd/yyyy) %y : 年份最后两位数字 (00.99) %Y : 完整年份...常用选项: -c:打印出现次数 -d:只打印重复行 -u:只打印不重复行 -D:只打印重复行,并且把所有重复行打印出来 -f N:比较跳过前 N 列 -i:忽略大小写 -s N:比较跳过前 N 个字符...-n:在显示匹配到字符串前面加上行号。 -v:显示没有”搜索字符串”内容那一行。 -l:列出文件内容中有搜索字符串文件名称。 -o:只输出文件匹配到部分。...sed是一种在线编辑器,它一次处理一行内容,处理,把当前处理行存储在临时缓冲区,称为”模式空间”,接着用sed命令处理缓冲区内容,处理完成后,把缓冲区内容送往屏幕。...例子所示,第一条命令删除1至5行,第二条命令用hello替换hi。命令执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令结果。

2.2K10

Linux常用命令09 - sed

在处理文本文件,通常需要在一个或多个文件查找和替换文本字符串。 sed 是一个流编辑器。 它可以对文件和输入流(管道)执行基本文本操作。...默认情况下一行一行地读取文件,只更改第一次出现SEARCH_REGEX,当提供替换标志,所有出现情况都将被替换 INPUTFILE 要在其上运行命令文件名 最好在参数周围加上引号,这样 shell...为了便于演示,我将使用以下文件 file.txt: 123 Foo foo foo foo /bin/bash Ubuntu foobar 456 如果省略了 g 标志,那么每行搜索字符串第一个实例将被替换...正如您可能已经注意到,在前面的示例,foobar 字符串字符串 foo 也被替换了。 如果这不是想要行为,请在搜索字符串两端使用单词边界表达式(\b)。 这将确保部分词不匹配。...demo foobar {456} 最后但并非最不重要一点是,在使用 sed 编辑文件进行备份总是一个好主意。

2.1K30

Shell实用工具

语法 cut [options] filename options参数说明 选项参数 功能 -f 提取范围 列号,获取第几列 -d 自定义分隔符 自定义分隔符,默认为制表符。...提取文件第一列,第三列, 枚举查找 cut cut1.txt -d " " -f 1,3 ? 提取文件第二列,第三列,第四列, 范围查找 ?...演示6: 替换后内容写入文件 将每行第二个匹配itheima替换为hello , 将替换后内容写入到sed2.txt文件 # 第一种方式 sed -n 's/itheima/hello/2pw...,切开部分再进行各种分析处理,因为切开部分使用awk可以定义变量、运算符, 使用流程控制语句进行深度加工与分析。...示例: 打印10到20行第一获取第10到20行第一信息 awk -F: '{if(NR>=10 && NR<=20) print $1}' passwd ?

7.8K10

Linux常用shell语法和命令

End部分同理,如果省略.CEnd,表示结尾到本栏尾 # 使用 -k 1.2 表示对第一第二个字符开始到本栏最后一个字符为止字串进行排序 $ sort -t ' ' -k 1.2 facebook.txt...1、地址定界 单个行号:1为取第一行,5为取第五行,$为取最后一行 范围行:1,3表示闭区间从第一行到第三行,1~2~表示步长,即第一行,第三行,第五行 2、正则寻址 单个正则匹配:/string.../为抓取包含string行 一个正则匹配范围:/^on/,/off$/为抓取从on开头到off结尾行之间(包含这两个匹配行)文本 行范围与正则匹配范围集合:10,/string/表示从第10行到第一次匹配到...例如:打印最后四位前两位是02串 sed -n '/02[0-9][0-9]$/p' file(s) 其他 如果正在执行字符串替换,并且规则表达式或替换字符串中有许多斜杠,则可以通过在 ‘s’ 之后指定一个不同字符来更改分隔符...初始,FS被赋为空格(包含制表符和空格符)。如果需要使用其他字符分隔字段,冒号或破折号,则需要将FS 变量值设为新字段分隔符

4.3K20

linux awk 内置变量实例

一、内置变量 属 性 说 明 $0 当前记录行,代表一行记录 $1~$n 当前记录第n个字段,字段间由FS分隔 FS 输入字段分隔符,默认是空格 NF 当前记录字段个数,就是有多少列,一般取最后一列字段...环境变量 ERRNO UNIX系统错误消息 FIELDWIDTHS 输入字段宽度空白分隔字符串 FNR 当前记录数 OFMT 数字输出格式 %.6g RSTART 被匹配函数匹配字符串首 RLENGTH...因为passwd里是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行各个字段对应值,$NF代表最后一列。...a) 任何在BEGIN之后列出操作(在{}内),将在awk开始扫描输入之前执行 b) 任何在END之后列出操作,将在扫描完全部输入之后执行 因此,通常使用BEGIN来显示变量和初始化变量,使用END...结果:  start.... awk test end.... 2) 获取外部变量 格式: awk ‘{action}’ 变量名=变量值 ,这样传入变量可以在action获得值。

2.8K20

生信人自我修养:Linux 命令速查手册(全文引用)

默认搜索是区分大小写 grep -i pattern files # 只匹配整个单词,而不是字符串部分搜索hello,不会匹配到helloworld) grep -n pattern files...:空格,制表符 sed 's/AA/BB/' file # 将文件AA替换成BB,只替换一行第一次出现AA,替换后结果输出到屏幕 sed 's/AA/BB/g' file # 将文件所有...BEGIN和END{action}不能省略 pattern 可能是: BEGIN, 执行初始化操作,程序开始执行一次 END,执行收尾工作,程序结束执行一次 expression,一个表达式,既可以是判断语句...-F ';' -v OFS='\t' '{print $1,$2,$NF}' file # 读入文件以逗号;分隔列,打印第1列,第2列和最后一列,并且打印以制表符作为列分隔符 number=10...a[$2]++' file # 第二出现两次2,只保留第一次出现那一行,结果如下: 1 2 3 4 5 11 12 13 14 15 16 17 18 19 20 awk '{sum+=$1}

3.9K40
领券