最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界视点!02-Sed语法介绍

来源:博客园


(相关资料图)

1 Sed语法介绍

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

sed [-n] [-e] "commands" filessed [-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,10ds/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

关键词: 编辑指令 编辑命令 正则表达式