LINUX sed用法
SED尹会生--2010.9.6注:本文档中的代码和图片均来自《sed与awk(第二版)》一 文本的操作sed是一个“非交互式的”面向字符流的编辑器,awk是一种负责模式匹配的程序设计语言,它的典型示例是将数据转换成格式化的报表。
二 了解sed awk的基本操作范例一:file1.txtJohn Daggett, 341 King Road, Plymouth MAAlice Ford, 22 East Broadway, Richmond V AOrville Thomas, 11345 Oak Bridge Road, Tulsa OKTerry Kalkas, 402 Lans Road, Beaver Falls PAEric Adams, 20 Post Road, Sudbury MAHubert Sims, 328A Brook Road, Roanoke V AAmy Wilde, 334 Bayshore Pkwy, Mountain View CASal Carpenter, 73 6th Street, Boston MA用Massachusetts替换MA$ sed 's/MA/Massachusetts/' file1.txt使用多重指令$ sed 's/ MA/, Massachusetts/ ; s/ PA/, Pennsylvania/' file1.txt 或者:$ sed -e 's/ MA/, Massachusetts/' -e 's/ PA/, Pennsylvania/'file1.txt脚本:sedsrcs/ MA/, Massachusetts/s/ PA/, Pennsylvania/s/ CA/, California/s/ VA/, Virginia/s/ OK/, Oklahoma/使用脚本文件$ sed -f sedsrc file1.txt保存输出$ sed -f sedsrc file1.txt > newfile.txt阻止输入行自动显示$ sed -n 's/MA/Massachusetts/p' file1.txt 常见出错信息‘’不匹配s/src/dst/ 缺少最后的“/”使用awk使用脚本文件awk -f script files打印输入文件每行的第一个字段$ awk '{ print $1 }' file1.txt打印匹配这种模式的每一行$ awk '/MA/' file1.txt限制只输出每条记录的第一个字段$ awk '/MA/ { print $1 }' file1.txt改变分隔字符$ awk -F, '/MA/ { print $1 }' file1.txt使用多重命令,用“分号”隔开$ awk -F, '{ print $1; print $2; print $3 }' file1.txt 常见出错信息没有大括号{}将过程括起来没用单引号’’将指令括起来没有使用斜杠//slashes 将正则表达式括起来DescriptionOption-f Filename of script follows.-F Change field separator.-v var=value follows.三 了解正则表达式语法 Regular Expression表达式(模式匹配)算术表达式:1+2 3*5 1+2*3 (1+2)*3特定的模式:A B C … … -> a b c … …ABC ADC AEC … …ab abb abbb abbbb abbbb… …一个正则表达式描述了一种模式或字符序列正则表达式的匹配过程元字符SpecialCharacterUsages.匹配除换行符之外的任意单个字符,awk中可以匹配换行符*匹配任意一个(包括零个)在它前面的字符SpecialCharacterUsages[...]匹配方括号中的任意一个字符,^为否定匹配, -表示字符的范围^作为正则表达式的第一个字符,匹配行的开始。
在awk中可以嵌入换行符$作为正则表达式的最后一个字符,匹配行的结尾。
在awk中可以嵌入换行符\{n,m\}匹配出现的n到m次数, \{n\}匹配出现n次。
\{n,\}匹配至少出现n次\转义字符扩展元字符Extended Metacharacters (egrep and awk)SpecialCharacterUsages+匹配前面的正则表达式的一次出现或多次出现?匹配前面的正则表达式的零次出现或一次出现|可以匹配前面的或后面的正则表达式(替代方案)()对正则表达式分组{n,m}匹配出现的n到m次数, {n}匹配出现n次。
{n,}匹配至少出现n次,大多数awk都不支持,用于POSIX egrep和POSIX awk编写正则表达式的3个步骤:1 知道要匹配的内容以及它如何出现在文本中。
2 编写一个模式来描述要匹配的内容3 测试模式来查看它匹配的内容模式匹配产生的结果H its(命中)这是我想匹配的行Misses(未命中)这是我不想匹配的行Omissions(遗漏)这是我不能匹配但想要匹配的行False alarms(假警报)这是我不想匹配的但却匹配了的行字符类[W w]hat\.H[12345]字符的范围[a-z][0-9][Cc]hapter[1-9][-+*/][0-1][0-9][-/][0-3][0-9][-/][0-9][0-9]排除字符类[^0-9]重复出现的字符5105010050010005000[15]0*[15]00*字符的跨度* 与 \{n,m\}电话号码的匹配[0-9]\{3\}-[0-9]\{7,8\}分组操作compan(y|ies)注意:大多数sed和grep不能对圆括号()进行匹配,但是在egrep和awk所有版本都是可以的四 编写sed脚本模式空间sed -e ‘s/pig/cow/’ -e ‘s/cow/horse/’寻址上的全局透视(定址)sed将命令应用于每个输入行,它可以指定零个、一个或两个地址。
每个地址都是一个描述模式、行号或者行寻址符号的正则表达式。
范例file2.txt.T SBei j ing,C N.T EShanghai,C Nguang z hou,C Nshenyang,C N$ sed '/Bei j ing/s/C N/China/' file2.txt删除所有的行d只删除第一行1d使用寻址符号$,删除最后一行$d删除空行,正则表达式必须封闭在斜杠//当中/^$/d删除.T S和.T E标记的tbl输入/^\.T S/,/^\.T E/d删除第五行到结尾所有的行5,$d混合使用行地址和模式地址$ sed '1,/^$/d' file2.txt删除除了那些行以外的行1,5!d分组命令/^\.T S/,/^\.T E/{s/C N/China/s/Bei j ing/B J/}五 基本的sed命令sed命令的语法[address]command行地址对于任何命令都是可选的,它可以是一个模式,或者由斜杠、行号或行寻址符号括住的正则表达式,大多数sed命令能接受由逗号分隔的两个地址,有些命令只接受单个行地址命令还可以用大括号进行分组,第一个命令可以和大括号放在同一行,但是右大括号必须自己一行注释#号开始的一行#n该行不会自动产生输出替换[address]s/pattern/replacement/flags标志flags是:n 可以是1-512,表示第n次出现的情况进行替换g 全局更改p 打印模式空间的内容w file 写入到一个文件file中& 用正则表达式匹配的内容进行替换\n 回调参数$ cat test1first:secondone:two$ sed 's/\(.*\):\(.*\)/\2:\1/' test1second:firsttwo:one删除[address]d删除模式空间的内容,同事改编脚本的控制流,执行这个命令后,在“空的”模式空间不再有命令执行。
删除命令会导致读取新的输入行追加、插入和更改[line-address]a text[line-address]i text[address]c text转换[address]y/abc/xy z/打印[address]p 用于输出模式空间的内容打印行号[line-address]=/if/{=p}下一步[address]nn命令输出模式空间的内容,然后读取输入的下一行,而不用返回脚本的顶端/test/{ns/aa/bb/p}读和写文件 范例文件file4.txt[line-address]r file[address]w file$ sed -e '/<mail list>/r maillist' -e '/<mail list>/d' file4.txt /MA$/w region.MA/VA$/w region.VA/CA$/w region.CA退出[line-address]q$ sed '100q' test六高级sed命令高级命令分成3个组:1 处理多行模式空间(N、D、P)2 采用保持空间来保存模式空间的内容并使它可用于后续的命令(H、h、G、g、x)3 编写使用分支和条件指令的脚本来更改控制流(:、b、t)高级脚本都做一件共同的事,那就是他们改变了执行或控制的流程顺序。
多行模式空间追加下一行多行N ext(N)命令通过读取新的输入行,并将它添加到模式空间的现有内容之后来创建多行模式。
sed ‘=’ afile.txt | sed ‘N;s/\n/. \t/’多行删除D命令删除模式空间中直到第一个换行符的内容。
它不会导致读入新的输入行,相反,它返回到脚本的顶端,将这些指令应用与模式空间剩余的内容。
将多个空行减少到一行/^$/{N/^\n$/D}多行删除命令完成工作的原因是,当遇到两个空行时,D命令只删除两个空行中的第一个。
下一次遍历该脚本时,这个空行将导致另一行被读入模式空间。
如果那行不为空,那么两行都输出,因此确保了输出一个空行。
换句话说,当模式空间中有两个空行时,只有第一个空行被删除。
当一个空行后面跟有文本时,模式空间可以正常输出。
多行打印P命令输出多行模式空间的第一部分,直到第一个嵌入的换行符为止。
在执行完脚本的最后一个命令之后,模式空间的内容自动输出。
Linux命令高级技巧使用sed和正则表达式进行文本替换和编辑
Linux命令高级技巧使用sed和正则表达式进行文本替换和编辑Linux操作系统是一个广泛应用于服务器和嵌入式系统的开放源代码操作系统。
它以其稳定性、安全性和可定制性而闻名。
Linux命令行工具提供了丰富的功能,可以帮助用户进行各种任务,其中包括文本替换和编辑。
在本文中,我们将介绍如何使用sed命令和正则表达式来进行高级文本替换和编辑操作。
sed是一种用于流编辑的Linux命令行工具。
它可以读取文本文件,按照指定的规则进行修改,并将结果输出到标准输出或者写回文件中。
sed通过使用正则表达式来匹配和替换文本中的模式,并且可以进行大规模批量处理。
一、基本用法要使用sed命令进行文本替换,我们需要提供三个参数:替换模式、替换内容和输入文件。
下面是一个简单的例子:sed 's/old/new/' input.txt在上面的例子中,sed命令使用s命令进行替换操作,s代表substitute。
我们将模式中的old字符串替换为new字符串。
input.txt是我们要进行替换操作的输入文件。
二、正则表达式正则表达式是一种表达文本模式的工具,可以根据模式来进行文本匹配和处理。
在sed中,我们可以使用正则表达式来指定替换模式。
下面是一些常见的正则表达式符号和用法:1. ^:匹配行首。
2. $:匹配行尾。
3. .:匹配任意字符。
4. *:匹配前一个字符0次或多次。
5. []:匹配字符集中的任意一个字符。
6. [^]:匹配不在字符集中的任意一个字符。
7. \:转义字符。
例如,要替换以A开头的行,可以使用以下命令:sed 's/^A/new/' input.txt三、替换标志在sed命令中,我们还可以使用标志来控制替换操作的行为。
下面是一些常用的替换标志:1. g:全局替换,替换所有匹配到的字符串,默认只替换第一个匹配到的字符串。
2. i:忽略大小写,不区分大小写进行匹配。
3. p:打印匹配的行。
Linux命令高级技巧使用sed进行模式匹配和替换
Linux命令高级技巧使用sed进行模式匹配和替换Linux命令高级技巧:使用sed进行模式匹配和替换sed(stream editor)是Linux操作系统中一款十分强大的流式编辑器。
它可以实现对文本进行各种操作,包括模式匹配和替换。
本文将介绍sed命令的使用方法,帮助读者学习如何利用sed进行高级的模式匹配和替换。
一、基本概述sed命令的基本用法是:sed 's/模式/替换内容/g' 文件名其中,s表示substitute(替换),/模式/表示要查找的内容模式,替换内容表示要替换为的内容,g表示全局替换。
二、模式匹配1. 正则表达式在sed命令中,可以使用正则表达式作为模式进行匹配。
例如,要匹配包含单词"apple"的行,可以使用以下命令:sed '/apple/p' 文件名其中,/apple/表示要匹配的模式,p表示打印匹配的行。
2. 匹配多个模式sed命令还支持同时匹配多个模式,并对匹配到的行进行不同的处理。
例如,要匹配包含单词"apple"和"banana"的行,并将其替换为"fruit",可以使用以下命令:sed '/apple/s/apple/banana/g' 文件名其中,/apple/表示第一个模式,s表示替换,apple表示要替换的内容,banana表示替换为的内容,g表示全局替换。
3. 匹配行号sed命令还支持根据行号进行模式匹配。
例如,要匹配第3行,并将其替换为"hello",可以使用以下命令:sed '3s/.*/hello/' 文件名其中,3s表示匹配第3行,.*表示匹配任意字符,hello表示替换为的内容。
三、模式匹配与替换1. 模式匹配后替换sed命令还可以通过模式匹配的结果来进行具体的替换操作。
例如,要将包含单词"apple"的行替换为"banana",可以使用以下命令:sed -n '/apple/{s/apple/banana/g;p}' 文件名其中,/apple/表示匹配的模式,s/apple/banana/g表示替换操作,p表示打印替换后的结果。
Linux命令高级技巧使用sed命令进行复杂文本处理与转换的高级用法
Linux命令高级技巧使用sed命令进行复杂文本处理与转换的高级用法sed(Stream Editor)是一种功能强大的文本处理工具,常用于从输入文件中选择部分文本进行操作、转换和替换等操作。
在Linux系统中,sed命令被广泛应用于文本处理,特别是在自动化脚本中。
本文将重点介绍sed命令的高级用法,帮助读者更好地利用sed命令进行复杂文本处理与转换。
1. 删除文本中的指定行在处理文本文件时,有时我们需要删除其中的某些行。
sed命令可以很方便地实现这一功能。
以下是一个示例,将演示如何使用sed命令删除文本文件中的第10行:```sed '10d' filename```2. 删除文本中的行范围除了删除单个指定行外,sed命令还可以删除指定范围内的行。
以下是一个示例,演示如何使用sed命令删除文本文件中第5行到第10行之间的内容:```sed '5,10d' filename```3. 替换文本中的指定内容在文本处理中,替换指定内容是一个常见需求。
sed命令可以非常方便地实现这一功能。
以下是一个示例,演示如何使用sed命令将文本文件中所有的"apple"替换为"orange":```sed 's/apple/orange/g' filename```4. 在指定行前或后插入文本除了删除和替换内容外,有时我们需要在文本中的特定行前或后插入新的内容。
以下是一个示例,演示如何使用sed命令在文本文件的第10行后插入一行文字:```sed '10a\This is a new line.' filename```类似地,如果要在指定行前插入内容,可以使用如下命令:```sed '10i\This is a new line.' filename```5. 多个操作组合使用上述的sed命令示例只展示了单个操作的用法。
如何使用sed命令在Linux中进行文本替换
如何使用sed命令在Linux中进行文本替换Sed命令是Linux中非常强大的文本处理工具,它可以用来进行文本替换、删除、插入等操作。
在本文中,将详细介绍如何使用sed命令进行文本替换。
一、什么是sed命令Sed(Stream Editor)是一种流式文本编辑器,可以对文本进行逐行处理。
它通过读取输入流中的文本,应用一系列的编辑命令,并将处理结果输出到标准输出。
Sed命令在Linux中被广泛应用于文本处理、大规模替换等操作。
二、Sed命令的基本用法1. 替换操作:sed 's/old/new/' filename这个命令将会在文件中替换掉所有的"old"字符串,并用"new"字符串进行替换。
2. 正则表达式:sed 's/pattern/replacement/' filename使用正则表达式来匹配需要替换的文本。
可以使用正则表达式的特殊符号来指定替换的范围和规则。
三、Sed命令的高级用法1. 全局替换:sed 's/old/new/g' filename在替换命令的末尾添加"g"选项可以实现全局替换。
否则,默认情况下,sed只替换每行中的第一个匹配。
2. 仅替换指定行:sed '2s/old/new/' filename通过指定行号,可以只对指定行进行替换操作。
这个命令将会替换文件中第2行的"old"字符串。
3. 替换指定范围:sed '2,5s/old/new/' filename通过指定范围,可以在给定范围内进行替换操作。
这个命令将会替换文件中第2行到第5行的所有"old"字符串。
4. 替换匹配模式所在行的下一行:sed '/pattern/{n;s/old/new/;}' filename这个命令将会在匹配模式所在行的下一行进行替换操作。
linux中sed用法
linux中sed用法
sed是一种流编辑器,常用于文本替换、删除、插入等操作。
以下是linux中sed的常用用法:
1. 替换字符串
sed 's/old/new/g' file
将file中所有出现的old字符串替换为new字符串。
2. 删除行
sed '/pattern/d' file
删除file中所有包含pattern的行。
3. 插入行
sed '/pattern/i
ew line' file
在file中所有包含pattern的行前插入新行。
4. 追加行
sed '/pattern/a
ew line' file
在file中所有包含pattern的行后追加新行。
5. 替换行
sed 'N;s/old/new/' file
将file中每两行的old字符串替换为new字符串。
6. 删除空白行
sed '/^$/d' file
删除file中所有空白行。
7. 按行号替换
sed '2s/old/new/' file
将file中第2行的old字符串替换为new字符串。
以上是sed常用的几种用法,可以帮助我们更方便、高效地处理文本文件。
Linux命令进阶使用sed进行正则表达式匹配与替换
Linux命令进阶使用sed进行正则表达式匹配与替换sed(Stream Editor)是Unix/Linux系统中一种常用的命令行文本编辑工具,它可以在对数据进行流式处理时,根据用户指定的规则进行字符串匹配与替换。
sed支持正则表达式,使得在处理文本时,更加灵活高效。
本文将介绍如何使用sed进行正则表达式匹配与替换,以及一些常见的用法和实例。
一、sed命令概述sed命令是Linux系统中的一个强大的文本处理工具,常用于从文件或者标准输入流中读取数据,并按照指定的规则进行处理。
它的基本语法为:```sed [options] 'command' file(s)```其中,options是可选的参数,command是sed的操作命令,file(s)表示要处理的文件。
sed命令可以直接在命令行中使用,也可以将命令写入一个脚本文件中进行批量处理。
二、sed命令选项sed命令有许多选项,下面介绍一些常用的选项:1. -n:只打印经过sed命令处理后的结果,不输出其他内容。
2. -i:直接修改原文件,而不是打印结果到标准输出。
3. -e:指定多个命令,用分号分隔。
4. -r:启用扩展正则表达式。
5. -f file:从指定的文件中读取sed命令。
三、sed基本操作命令1. p:打印匹配行。
2. d:删除匹配行。
3. s/pattern/replacement/g:替换匹配的文本。
4. i:在指定行之前插入文本。
5. a:在指定行之后追加文本。
四、使用sed进行正则表达式匹配与替换sed命令的最常见用法是进行字符串匹配与替换。
下面介绍一些常用的正则表达式匹配与替换操作:1. 使用sed进行简单的字符串替换假设我们有一个文件file.txt,内容如下:```Hello, World!```我们可以通过下面的命令使用sed进行简单的字符串替换:```sed 's/Hello/Hi/' file.txt```执行上述命令后,输出的结果如下:```Hi, World!```这条命令中,s表示替换操作,/Hello/表示要被替换的字符串,/Hi/表示替换后的字符串。
linux命令sed用法
linux命令sed用法Linux命令sed是一款常用的文本处理工具,可以用来实现文本替换、删除、插入等多种操作。
其用法有以下几个方面:1. 替换文本sed命令最常用的功能就是替换文本。
语法如下:sed 's/old/new/g' file.txt其中,s表示替换指令,old表示要替换的文本,new表示替换后的文本,g表示全局替换。
file.txt表示要操作的文件名。
举个例子,假如我们有一个文件file.txt,里面是一些话题的名称,需要将其中的“人工智能”改成“AI”,可以使用以下命令:sed 's/人工智能/AI/g' file.txt2. 删除行如果我们需要删除文件中的某些行,可以使用d指令。
语法如下:sed '/pattern/d' file.txt其中,pattern表示匹配的文本。
file.txt表示要操作的文件名。
这样,可以将匹配到的行删除。
举个例子,如果我们需要将文件file.txt中包含“敏感词”的行全部删除,可以使用以下命令:sed '/敏感词/d' file.txt3. 插入文本如果需要在文件中某一行的前面或后面插入一些文本,可以使用i或a 指令。
语法如下:sed '/pattern/i\ new_line' file.txt或者:sed '/pattern/a\ new_line' file.txt其中,pattern表示匹配的文本,i表示在匹配行前面插入,a表示在匹配行后面插入,new_line表示要插入的文本。
举个例子,如果我们需要在文件file.txt中第二行前面插入一行“这是第一行”,可以使用以下命令:sed '2i\ 这是第一行' file.txt4. 多重编辑如果需要对同一个文件进行多次编辑操作,可以使用多个sed命令,并用分号隔开。
语法如下:sed 'command1; command2; command3...' file.txt举个例子,如果我们需要将文件file.txt中的“敏感词”全部删除,并将“人工智能”改成“AI”,可以使用以下命令:sed '/敏感词/d; s/人工智能/AI/g' file.txt总结sed命令作为一款强大的文本处理工具,可以帮助我们快速进行文本替换、删除、插入等操作,提高工作效率。
linux sed正则
linux sed正则Linux中的sed工具是一个非常强大的文本处理工具,它可以使用正则表达式对文本进行匹配和替换。
在本文中,我们将介绍一些常用的正则表达式用法,以及如何在Linux命令行中使用sed工具进行文本处理。
1. 匹配单词在sed中,匹配单词可以使用b元字符,它表示单词的边界。
例如,要匹配单词“linux”,可以使用以下命令:sed 's/blinuxb/unix/g' file.txt这个命令将在file.txt文件中查找所有出现的“linux”单词,并将它们替换为“unix”。
2. 匹配数字要匹配数字,可以使用d元字符,它表示匹配任何数字字符。
例如,要将文件中所有的数字替换为“#”,可以使用以下命令: sed 's/d/#/g' file.txt这个命令将在file.txt文件中查找所有的数字,并将它们替换为“#”。
3. 匹配任何字符要匹配任何字符,可以使用.元字符,它表示匹配任何单个字符。
例如,要查找所有包含单词“cat”的行,并将它们替换为“dog”,可以使用以下命令:sed '/cat/s/.*/dog/' file.txt这个命令将在file.txt文件中查找所有包含单词“cat”的行,并将它们替换为“dog”。
4. 匹配多个字符要匹配多个字符,可以使用[]元字符。
例如,要查找所有包含单词“cat”或“dog”的行,并将它们替换为“pet”,可以使用以下命令:sed '/[cd]at/s/.*/pet/' file.txt这个命令将在file.txt文件中查找所有包含单词“cat”或“dog”的行,并将它们替换为“pet”。
5. 使用反向引用在sed中,可以使用反向引用来引用之前匹配的字符串。
例如,要将所有重复的单词替换为一次出现的单词,可以使用以下命令:sed 's/b([a-z]*)bs+1b/1/g' file.txt这个命令将在file.txt文件中查找所有重复的单词,并将它们替换为一次出现的单词。
Linux命令高级技巧使用sed命令进行批量文本替换与编辑
Linux命令高级技巧使用sed命令进行批量文本替换与编辑Linux命令高级技巧:使用sed命令进行批量文本替换与编辑sed命令在Linux系统中是一种非常常用的文本处理工具,它可以用来进行批量的文本替换与编辑。
本文将介绍sed命令的基本用法以及一些高级技巧,帮助读者更好地理解和运用sed命令。
1. sed命令基本用法sed命令的基本语法如下:```shellsed 's/源字符串/目标字符串/' 文件名```其中,s代表替换(substitute),源字符串表示需要被替换的内容,目标字符串表示替换后的内容,文件名表示需要进行替换操作的文件。
例如,我们有一个名为example.txt的文件,内容如下:```Hello, World!```我们想将其中的"Hello"替换为"Goodbye",可以使用以下sed命令:```shell```执行上述命令后,example.txt的内容将变为:```Goodbye, World!```2. sed命令修改文件内容默认情况下,sed命令只是将替换结果打印至屏幕,并不会修改原文件。
如果需要直接修改文件内容,可以使用"-i"选项,示例如下:```shellsed -i 's/Hello/Goodbye/' example.txt```执行上述命令后,example.txt的内容将直接发生改变,无需手动保存。
需要注意的是,使用"-i"选项时,sed命令会直接修改文件内容,因此建议在操作前备份文件。
3. 全局替换和仅替换第一个匹配项sed命令默认替换每行中的第一个匹配项,如果需要全局替换,可以使用"g"选项。
示例如下:```shell```上述命令将替换每行中的所有"Hello"为"Goodbye"。
linux之sed命令详解
linux之sed命令详解sed是⼀个⾮交互式⽂本编辑器,它可以对⽂本⽂件和标准输⼊进⾏编辑,标准输⼊可以来⾃键盘输⼊,⽂件重定向,字符串,变量,或者是管道的⽂本。
并将其复制到缓冲区,然后读取命令⾏的命令,对此命令要求的⾏号进⾏编辑。
⽤法:sed共有三种⽤法:①直接在命令⾏中使⽤ sed [选项] 'sed命令' 输⼊⽂件②将sed命令写⼊脚本⽂件中,使⽤sed命令调⽤ sed [选项] -f sed脚本⽂件输⼊⽂件③将sed命令写⼊脚本⽂件中,并设置为可执⾏ ./sed 脚本⽂件输⼊⽂件其中第③种的脚本⽂件中需要使⽤#!符号开头。
sed常⽤的选项-n:不打印所有的⾏到标准输出,只输出那些被命令影响到的⾏-e:表⽰将下⼀个字符串解析为sed编辑命令,如果只有⼀个编辑命令,则-e可以省略-f:表⽰正在调⽤sed脚本⽂件-r:表⽰⽀持延伸型的正则表⽰法(默认只⽀持基础正则表⽰法)-i:直接修改读取的⽂件内容,⽽不是通过屏幕输出。
sed命令sed命令通常由两部分组成。
⽂本定位和sed编辑命令。
⽂本定位对⽂本的部分⾏进⾏抽取,编辑命令对抽取的⾏进⾏编辑。
sed定位⽅式sed提供了两种定位⽅式:①通过⾏号,指定⼀⾏或者⾏号范围②使⽤正则表达式定位⽅式:x:x为指定⾏号x,y:指定从x到y的⾏号范围/pattern/:查询包含模式的⾏/pattern/pattern/:查询包含两个模式的⾏x,/pattern/:从x⾏到patter模式匹配的⾏之间x,y!:查询不包括x和y⾏号的⾏sed编辑命令p:打印匹配⾏=:打印⽂件⾏号a:在定位⾏号之后追加⽂本信息i:在定位⾏号之前插⼊⽂本信息d:删除定位⾏c:使⽤新⽂本替换⽂本⾏s:使⽤替换模式替换相应模式r:从另⼀个⽂件中读取⽂本w:将⽂本写⼊到⼀个⽂件y:变换字符q:第⼀个模式匹配后退出{}:在定位⾏执⾏命令组n:读取下⼀个输⼊⾏,⽤下⼀个命令处理新的⾏说了这么多,我们就先来体验⼀下:[fuwh@localhost 15:11 ~/stu]$ nl test1 first line2 second line3 l i n e4 what is this[fuwh@localhost 15:11 ~/stu]$ sed '2d' testfirst linel i n ewhat is this这就是sed的⼀个基本使⽤⽅式。
