使用cat查看测试文件内容:
$cat test.txt
this is a test
1line
2line
sed [-nefr] [操作]
选项[-nefr]
-n sed命令在对文本进行处理后,会默认把处理过的文本标准输出到屏幕上,使用-n命令可以只输出文本中被处理过的行。
exp:
1.sed -n '/带匹配字符/p' 文件名
$sed '/a/p' test.txt
this is a test
this is a test
1line
2line
$sed -n '/a/p' test.txt
this is a test
p代表的是print:打印文本中的每一行内容和/带匹配字符/中匹配到的内容;/a/代表匹配包含a的行;
因此默认会输出文本的所有行和匹配到的包含a的行,即包含a的行会输出两次;
但如果加上-n,就会仅打印匹配到包含a的行。
-e 直接在命令模式上进行sed的操作编辑,可以在一行执行多条命令。
$sed -e '1,2p' -e '1,2athis is a new line' test.txt
-f 直接将sed的操作写在一个文件夹内。
-r 代表使用扩展正则表达式的语法。
2.-r 扩展正则表达式
+ 一个或者多个
? 0个或者一个
| 用或(or)的方法找出整个字符串
() 捕获
()+ 捕获的重复
$sed 's/\([0-9]\)\([a-z]\)/\1\t\2/g' test.txt #在数字与字母间插入tab
this a test
1 line
2 line
$sed -r 's/([0-9])([a-z])/\1\t\2/g' test.txt #使用扩展正则,()不要\转义
this a test
1 line
2 line
-i 直接修改读取的文件内容,而不是由屏幕输出。
[操作]说明
'[n1,{n2}] function' #sed 执行的操作需要放在单引号之中
n1,n2 不一定会存在,代表操作的行数。
function包括:
a 新增,a的后面接字符,这些字符会出现在目前行的下一行。
3.新增多行内容
$sed '1,2athis is a new line' test.txt #在第1/2行之后新加一行内容
this is a test
this is a new line
1line
this is a new line
2line
$sed '1,2athis is a new line\
>this is another new line' test.txt #新加多行内容:反斜杠回车后继续写
this is a test
this is a new line
this is another new line
1line
this is a new line
this is another new line
2line
c 替换,c的后面接字符,这些字符会替换n1,n2行之间的内容。
d 删除。
i 插入,i后面接字符,这些字符会插入到当前行的上一行。
p 打印。
s 替换。
网友评论