使用sed和awk取除最后两个字段之外的字段

字符串示例为:

/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/ufs-client-2.0.0.jar

需求:如果使用斜杠/作为分隔符的话,可能每个字符串的字段数不同,这时需要取 除了最后两个字段外的其他字段字符串,所得结果应为如下形式:

/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/

解决方法:

1、使用sed

[[email protected] ~]# b="/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/2.0.0/ufs-client-2.0.0.jar"
[[email protected] ~]# a=`echo "/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/2.0.0/ufs-client-2.0.0.jar" |awk -F‘/‘ ‘{print $(NF-1)"/"$NF}‘`
[[email protected] ~]# echo $b|sed -n "s#$a##gp"
/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/

2、使用awk

[[email protected] ~]# b="/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/2.0.0/ufs-client-2.0.0.jar"
[[email protected] ~]# echo $b |awk -F‘/‘ ‘{gsub($(NF-1)"/"$NF,"");print}‘
/Users/yfan/Downloads/dsc20170801_jar/releases/com/netfinworks/ufs/ufs-client/
时间: 2024-08-03 03:08:29

使用sed和awk取除最后两个字段之外的字段的相关文章

awk && sed (1)====积累取ip以及sed 查找替换

(一)awk 和 sed 的相似点 (1)它们都使用相似的语法来调用. (2)它们都是面向字符流的,都是从文本中一行一行的输入,并且将输入直接送到标准输出端 (3)它们都使用正则表达式进行模式匹配 (4)它们允许用户在脚本中指定指令 我可能写的不是很好,这是我写脚本经常用到的,我认为这种东西要想学好就的多想,然后慢慢积累,而且我个人的心得是更加注重从实例出发,有些东西你看到以后多想想,可能到后来你还会遇到一些很相似的东西,不知不觉就学会了. (一)取ip,一定要注意观察我报错的地方 (1)最简单

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

今天主要跟大家介绍2个非常霸道的工具,sed和awk,本篇文章将介绍这两个工具在日常运维中的常用用法,工作中这两个工具要掌握好了在结合一些管道命令.正则表达式,日常处理事务简直666啦! l Sed 1.强大的地方 擅长对数据行进行处理,sed是一种流编辑器,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非

Shell脚本编程与sed,awk工具的使用--9月15日课程作业

一.shell程序的运行原理 1.脚本 脚本或程序源文件是一种文本文件,将文本文件转换成机器指令有两种转换方式: 编译执行:预处理-->编译-->汇编-->链接:事先完成,结果:二进制程序文件 例如:C, C++ 解释执行:由解释器全程参与运行过程,每次读取一行,运行一行: 例如:  Python:程序控制结构,调用编程库完成程序编写: 库文件:功能模块,在编程中可调用: Bash:调用机器上命令程序文件进行程序编写: 外部命令:各应用程序提供: 2.原理 当shell运行一个程序时,会

bash sed和awk

随着科技的发展,软硬件的不断更新.人们通过计算机逐渐从重复性劳动工作中解脱出来,那么计算机如何通过程序执行命令来实现我们预先设定好的步骤呢,请看下图: 一.我们知道计算机由硬件和软件组成.而软件又分为系统内核跟应用程序:当用户查看一条信息,或者编译一个程序指令,那么他的交互就由计算机通过系统内核调用程序接口,执行单一或者单一指令组成的复杂的程序组成,执行完后,又通过程序接口返回到内核通过输入输出设备呈现在大家面前. 二.程序接口按照他们的语法和编译方式将程序汇编或者调用成系统内核可以识别的指令进

Sed、Awk单行脚本快速参考

文本间隔: # 在每一行后面增加一空行 sed G awk '{printf("%s\n\n",$0)}' # 将原来的所有空行删除并在每一行后面增加一空行. # 这样在输出的文本中每一行后面将有且只有一空行. sed '/^$/d;G' awk '!/^$/{printf("%s\n\n",$0)}' # 在每一行后面增加两行空行 sed 'G;G' awk '{printf("%s\n\n\n",$0)}' # 将第一个脚本所产生的所有空行删

正则表达式学习之grep,sed和awk

正则表达式是用于描述字符排列和匹配模式的一种语法,它主要用于字符串的模式分割.匹配.查找以及替换操作. 描述一个正则表达式需要字符类.数量限定符.位置限定符.规定一些特殊语法表示字符类,数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式. 正则表达式的语法规范如下: 字符类:在模式中表示一个范围,但是取值范围是一类字符中的任意一个. 数量限定符:限定字符类出现的次数. 位置限定符:描述各种字符类和普通字符之间的位置关系. 特殊字符: 正则表达式有两种规范,分别是

linux shell必知必会sed、awk

sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等.以下介绍的是Gnu版本的Sed 3.02.   2. 定址   可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔

一个利用sed和awk处理文本的小栗子

这两天做<Linux操作系统>课程的作业,碰到了一个题目,感觉很有意思,很考验对awk掌握的熟练度,故特意拿来分享. 首先说题目是这样的,有这样一段文本: RECORD #这是多余的注释行one #record_type students #这是多余的注释行two F sno 11111110000 F name 王铁蛋 F gender 男 F age 20 F class 网络工程01 F region 湖北省武汉市 . RECORD #这是多余的注释行one #record_type s

三剑客基础详解(grep、sed、awk)

三剑客基础详解 三剑客之grep详解 通配符与正则表达式这两口子可以说贯穿三剑客始终,甚至时贯穿linux始终,这样说,我觉得并不夸张.因此在写三剑客之前,先捋一捋这些这些知识点就很有必要了. 相对而言正则用于三剑客多一些,通配符用于Linux命令行多一些. 1.通配符 通配符 描述 * 任意多个字符 ? 任意单个字符 . 当前目录 .. 上级目录 : 命令分隔符 ~ 当前用户家目录 $ 引用变量 ! 逻辑运算非 && 前一个命令执行成功,则执行后面的命令 || 当前命令执行失败,则执行后