sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑www.it165.net;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例:(假设我们有一文件名为ab)
[root@localhost ruby] # sed ’1d’ ab #删除第一行
[root@localhost ruby] # sed ‘$d’ ab #删除最后一行
[root@localhost ruby] # sed ’1,2d’ ab #删除第一行到第二行
[root@localhost ruby] # sed ’2,$d’ ab #删除第二行到最后一行
. [root@localhost ruby] # sed -n ’1p’ ab #显示第一行
[root@localhost ruby] # sed -n ‘$p’ ab #显示最后一行
[root@localhost ruby] # sed -n ’1,2p’ ab #显示第一行到第二行
[root@localhost ruby] # sed -n ’2,$p’ ab #显示第二行到最后一行
使用模式进行查询
[root@localhost ruby] # sed -n ‘/ruby/p’ ab #查询包括关键字ruby所在所有行
[root@localhost ruby] # sed -n ‘/\$/p’ ab #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
[root@localhost ruby] # sed ’1a drink tea’ ab #第一行后增加字符串”drink tea”
Hello!
drink tea
ruby is me,welcome to my blog.
[root@localhost ruby] # sed ’1,3a drink tea’ ab #第一行到第三行后增加字符串”drink tea”
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
drink tea
[root@localhost ruby] # sed ’1a drink tea\nor coffee’ ab #第一行后增加多行,使用换行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
代替一行或多行
[root@localhost ruby] # sed ’1c Hi’ ab #第一行代替为Hi
ruby is me,welcome to my blog.
[root@localhost ruby] # sed ’1,2c Hi’ ab #第一行到第二行代替为Hi
替换一行中的某部分
格式:sed ‘s/要替换的字符串/新的字符串/g’ (要替换的字符串可以用正则表达式)
[root@localhost ruby] # sed -n ‘/ruby/p’ ab | sed ‘s/ruby/bird/g’ #替换ruby为bird
[root@localhost ruby] # sed -n ‘/ruby/p’ ab | sed ‘s/ruby//g’ #删除ruby 插入
[root@localhost ruby] # sed -i ‘$a bye’ ab #在文件ab中最后一行直接输入”bye”
[root@localhost ruby]# cat ab
Hello!
ruby is me,welcome to my blog.
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:sed [-nefri] ‘command’ 输入文本常用选项:-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处...
Linux
流编辑器是在
数据
中
心
中
运行脚本的一种有用方法。通过这些
命令
示例,您可以开始熟悉
sed
。
想要修改文件而不覆盖原始文件的
Linux
管理员有很多选择,但最有效的工具之一是流编辑器 –
sed
。
流编辑器是大多数
Linux
发行版的默认部分。它使您能够
使用
Linux
sed
命令
在操作系统
中
执行文本文件操作。
与大多数
Linux
应用程序一样,
sed
可以处理
管道
输入,这使它成为一种有效的脚本工具。您可以将其用作基本的查找和替换工具,如下面的示例
命令
所示,该
命令
查找出现的一个实例,并将其替换为两个实例。
命令
以 /g结束。
sed
's/one/two/g'
linux
idc
linux
mi
1.在
命令
行定义编辑器
命令
(直接将
数据
通过
管道
输入
sed
编辑器处理)
echo “this is a test” |
sed
's/test/big test/'
输出:this ia a big test
2.在
命令
行
使用
多个编辑器
命令
sed
-e
sed
-e ‘ ’ ;‘ ’ script file
3.从文件
中
读取编辑器指令
sed
-f file 。将file
中
指定的
命令
天添加到...
-n
使用
silent安静模式,
sed
一般会将所有
数据
输出,
使用
-n,只输出
sed
有修改的行。
-e 直接在
命令
行模式上进行
sed
操作
-f 将
sed
的动作写入文件, -f filename 从文件
中
读取动作。
-r
使用
扩展正则表达式,默认为基础正则表达式
-i 直接修改文件内容,而不是屏幕输出。
Linux
提供
管道
符 “|”将两个
命令
隔开,
管道
符左边
命令
的输出就会作为
管道
符右边
命令
的输入
# 示例:
echo "hello world"|grep 'hello'
正则,什么是正则?
正则表达式就是记录文本规则的代码
常用的元字符
sed
是
Linux
系统
中
最为广泛
使用
的
命令
行编辑器,
sed
本身也是一个
管道
命令
,可将
数据
进行替换/删除/新增/选取等功能。
sed
命令
的执行过程大致如下:
1)一次从输入
中
读取一行
数据
;2)根据所提供的编辑器
命令
匹配
数据
;3)按照
命令
修改流
中
的
数据
;4)将新的
数据
输出到STDOUT
sed
命令
格式如下:
[root@centos7-magedu ~]#
sed
[-n...
filter:Example : cat grep sort wc
$ wc < file # standard input replaced by file
$ wc file # arguments format
[一般
命令
] | [filter指令] | [filter指令]
若第二个及之后的
命令
非filter指令,则需要用xargs。
$ echo test* | xargs ls等价于$ ls test*
$ cat 30.sh | xargs # 多行输入单行输出
sed
是
sed
'/pattern/ s/old_text/new_text/g' filename
这个
命令
将只对文件filename
中
匹配pattern的行进行old_text到new_text的替换操作。
这些是
sed
的一些基本
用法
,还有许多其他的
用法
可以根据需要进行学习和
使用
。