4 介绍函数参数
| s | d | a | i | c | p | l | r | w | y | ! | n | q | = | # | N | D | P | h | H | g | G | x | b | t |
4.1 s
函数参数s表示(substitute)文件内字符串。其指令格式
[address1[,address2]] s/pattern/replacement/[flag]
函数参数s最多与两个地址参数配合
pattern:它为regular expression字符串。它表示文件中要被、替换的字符串
replacement:它为一般字符串。但其内出现下列字符有特别意义
& :代表前pattern字符串
sed -e 's/test/& my car/' filename
&代表pattern字符串"test"。故执行后,数据文件的test被替换成"test my car"
\n : 代表pattern字符串中第n个\( \)所括起来的字符串
sed -e 's/\(test\) \(my\) \(car\)/[\2 \3 \1]/' filename
\1 表示"test" \2 表示"my" \3 表示"car"字符串 数据文件中"test my car"被替换成
"[my car test]"
\ : 可用它来还原一些特殊符号(如上述的&与\)本身字面上的意义,或用它来表示换行
flag : 主要用它来控制一些替换情况
当flag为g时,代表替换所有符合(match)的字符串
当flag为十进制数m时候,代表替换行内第m个符合的字符串
当flag为p时,代表替换第一个符合pattern的字符串,将数据输出标准输出文件
当flag为 w wfile时,代表替换第一个符合pattern的字符串后,输出到wfile内(如果wfile
不存在,则会重新开启名为wfile的档案)
当没有flag时,则将资料行内第一个符合pattern的字符串以replacement字符串来替换
delimiter : 在"/pattern/replace/[flag] " 中"/" 被当成一delimiter。除了空白(blank)、换行(newline) 之外, 使用者可用任
何字符作为delimiter。
替换input.dat档内"1996"字符串"1997",同时将这些数据存入year97.dat
说明:用函数参数s 指示sed将将"1996"替换成"1997",另外用s argument中的flag w指示sed
将替换过的资料存入year97.dat
sed -e 's/1996/1997/w year97.dat' input.dat
4.2 d
函数参数d表示删除数据行,其指令格式如下
[address1[,address2]] d
函数参数d最多与两个地址参数配合
sed 执行删除动作情况如下:
将pattern space内符合地址参数的数据删除
激昂下一笔资料读进pattern space
重新执行 sed script
4.3 a
函数参数a 表示将资料添加到文件中。其指令格式如下
[address]a\ 使用者所输入的数据
说明:
函数参数a最多与一个地址参数配合
函数参数a紧接着"\"字符用来表示该行解释,使用者所输入的数据必须从下一行输入,如果
数据超过一行,则须在每行的结尾加入"\".
sed 执行添加动作情况如下:当pattern space内数据输出后,sed跟着输出使用者所输入的
数据
sed -e '/UNIX/a\linux' filnname
4.4 i
函数参数i表示将资料插入文本文件中。其指令格式如下
[address]i\ 使用者所输入的数据
说明
函数参数i最多与一个地址参数配合
函数参数i紧接着"\"字符用来表示此行结束,使用者所输入的数据必须从下一行输入,如果数据
超过一行,则每行的末尾加入"\"。
sed 执行插入动作的情况如下:在pattern space内数据输出前,sed先输出使用者所输入的数据
将"edf"插在input.dat含有"abc"之前
sed -e '/abc/i\edf' file
sed -e '/abc/i\
edf
' file
4.5 c
函数参数c表示改变文件中的数据。其格式如下
[address1[,addree2]]c\ 使用者所输入的数据
说明
函数参数c最多与两个地址参数配合
函数参数c紧接着"\"字符用来表示此行结束,使用者所输入的数据必须从下一行输入。如果数据
超过一行,须在每行的结尾加入"\"。
sed 执行改变动作的情况: 在pattern space内数据输出时,sed改变它成为使用者所输入的数据
4.6 p
函数参数p表示印出资料。指令格式如下
[address1[,address2]]p
函数参数p最多与两个地址参数配合
sed执行印出动作的情况如下: sed拷贝一份pattern space内容至标准输出档
4.7 l
函数参数l,除可讲资料中的nonprinting character以及ASCII码列出外,其余均与函数参数p
相同
将input.dat档中的^[以ASCII码印出
The Great ^[ is a movie starring Steve McQueen.
sed -e 'l' input.dat
阅读(1099) | 评论(0) | 转发(0) |