首页 > 其他分享 >02-Sed语法介绍

02-Sed语法介绍

时间:2023-01-11 20:00:26浏览次数:38  
标签:02 dat sed 删除 语法 编辑 Sed 指令 file

1 Sed语法介绍

介绍Sed支持的基本命令及其命令行语法,Sed可以通过以下两种形式进行调用:
学习sed命令使用之前,需要掌握正则表达式的用法。

sed [-n] [-e] 'commands' files
sed [-n] -f script files

sed 命令列可以分为编辑指令与文件部分。其中编辑指令负责所有的编辑工作,文件表示所处理的文档。
其中,sed是用他的地址参数决定编辑对象,使用它的函数参数进行编辑。
sed 可以以命令行的方式进行执行,加-e,sed 还可以以脚本的方式进行执行,加-f

1.1 在命令行上执行sed指令

当编辑指令在命令行上进行执行的时候需要加上-e,其命令格式如下:

sed -e '编辑命令1' -e '编辑命令2' .....   files
  • 所有的编辑指令都在-e之后,并且在两个''之间。
  • 编辑指令的执行是从左到右的,一般在编辑指令不多的时候,往往使用命令行进行执行

例1

删除yel.dat内1-10行的数据,将其余文字中的yellow改为black

 sed -e '1,10d' -e 's/yellow/black/g' yel.dat
  • 1,10d--表示删除1-10行
  • s--表示替换
  • g--表示全部替换
  • s/查找词/替换词/g

1.2 sed编辑命令

[address1 [,address2]] function[argument]
  • address1,address2--表示为行数
  • function--sed内置函数

1.2.1 address 参数表示方法

  • 删除文件内第10行数据
sed -e '10d' test.txt
  • 删除含有'man'字符串的行
sed -e '/man/d' test.txt
  • 删除文档第2行到第100行数据
sed -e '2,100d' test.txt
  • 删除第10行含有'man'字符串的数据行
sed -e '10,/man/d' test.txt

注意:

  1. 如果使用正则表达式需要在正则表达式前后加/
// 删除含有两个t字母的数据行
sed -e '/t.*t/d' test.txt
  1. 在没有地址参数时候,全部数据参与编辑
  2. 只有一个地址参数的时候,地址所在行参与编辑运算
  3. address1,address2--表示起始行以及结束行,在之间进行编辑
    下面举几个例子进行说明:
//删除文件内所有的数据行
sed -e 'd' file

//删除第5行
sed -e '5d' file

//删除第一行到有apple字符串的一行
sed '1,/apple/d' file


//删除有apple字符串的行到有orange字符串的行
sed -e '/apple/,/orange/' file

1.2.2 常见的命令参数

命令 参数
# 注释
d 删除数据
s 替换字符串
p 输出

1.3 执行脚本中的编辑命令

当执行的指令太多,在命令行中书写命令十分的不方便,此时可以将这些指令存储到一个脚本文件(script_file)中,用选项-f script_file进行执行。

sed -f script_file file
//书写一个脚本文件,命名为ysb.scr
//脚本内容如下
1,10d
s/yellow/black/g

//指向脚本内容
sed -f ysb.scr yel.dat
  • sed执行脚本文件的时候是从上到下进行执行的
  • sed可以-e与-f进行混合使用,执行原则是从左到右,从上到下

1.4 同时对多个文件进行编辑

sed可以一次编辑多个文档,他们跟在编辑指令之后

  • 替换white.dat、rad.dat、black.dat文件内的yellow字符串转变为blue
sed -e 's/yellow/blue/g' white.dat red.dat black.dat
  • sed 按照书写顺序依次进行执行

1.5 执行输出控制

命令中的选项-n表示输出由编辑指令进行控制,sed原本会自动进行输出,加上-n之后输出由编辑命令控制。-n需要与编辑命名进行配合使用。
比如:输出while.dat文件中含有white字符串的数行

sed -n -e '/white/p' white.dat

标签:02,dat,sed,删除,语法,编辑,Sed,指令,file
From: https://www.cnblogs.com/Icer-newer/p/17043413.html

相关文章

  • 2023年1月11日有感而发
    时间过得飞快,转眼间,初二的上半学期就结束了。这也意味着,我的初中生涯,不仅仅在OI方面,已经过去了一半了。“常将有日思无日,莫把无时当有时。”,在最后的这些时间,嫣然回首,我......
  • 亚马逊云科技 2022 re:Invent 观察 | 天下武功,唯快不破
    引子“天下武功,无坚不摧,唯快不破”,相信大家对星爷电影《功夫》中的这句话耳熟能详。实际上,“天下武功,唯快不破”最早出自古龙先生的著名武侠小说《小李飞刀》:“小李飞刀,......
  • 上市公司数字化转型数据(1990-2021)
    上市公司数字化转型数据(1990-2021)​上市公司数字化转型数据(1990-2021)上市公司数字化转型数据(1990-2021) 最新版数据已整理为Excel格式,数据的时间区间为1990-2021年,内含“数......
  • 微信小程序的商品详情html转小程序语法
    加强://对img添加额外数据if(node.tag==='img'){if(node.attr.src.indexOf("http")==-1){node.imgIndex=results.images.length......
  • 2023.1.11
    7号打游戏8号当分母9号打游戏10号打游戏睡觉聊天11号睡觉玩手机刷bilibili……无意中又刷到戎导了……不敢多做评价,有时候很有道理,有时候有点……魔怔,不过有些话......
  • 力扣每日一题2023.1.11---2283. 判断一个数的数字计数是否等于数位的值
    现在还真成简单题重拳出击了。。。给你一个下标从0 开始长度为n 的字符串 num ,它只包含数字。如果对于每个 0<=i<n 的下标 i ,都满足数位 i 在num 中出......
  • Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: E
    报错截图:  产生原因:把sqlsession定义为了成员变量  解决方法:将sqlsession定义在方法内 ......
  • 2023年有感而撸
    伴随着咳嗽声,我们一起步入了全新的一年。回首2022:2022年一整年都在一片阴霾中度过,公司欠薪半年,导致我们的生活及其拮据,每天生活在焦虑之中,让我变的非常的“EMO......
  • markdown基本语法
    不同的地方可能语法要求有点小区别,可是都大同小异标题篇:1级标题(#+space)2级标题(##+space)...然后最多支持到6级标题引用:(>+space)这是i一个引用......
  • 2022.1.11
    CF1227F2.WrongAnswerontest233(HardVersion)我们设\(f_i\)表示考虑完所有的位置以后,循环右移比原序列答案更多的序列数。这题非常关键的一点是:\(f_i=f_{-i}\),......