文本替换编辑
选项 | 说明 |
---|---|
-e,--expression=<script> | 以选项中指定的script来处理输入的文本文件 |
-f,--file=<script文件> | 以选项中指定的script文件来处理输入的文本文件 |
-n,--quiet,--silent | 仅显示script处理后的结果 |
a | 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) |
c | 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! |
d | 删除,因为是删除啊,所以 d 后面通常不接任何东东; |
i | 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); |
p | 打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行 |
s | 取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g |
# 在testfile.txt文件的第四行后添加一行,并将结果输出到标准输出
sed -e 4a\newLine tesfile
# 以行为单位新增/删除(2,5d:d是删除,删除2-5行的数据)
nl testfile.txt | sed '2,5d'
# 只删除第二行
nl testfile.txt | sed '2d'
# 从第三行删除的最后一行
nl testfile.txt | sed '3,$d'
# 在第二行后追加newLine
nl testfile.txt | sed '2a newLine'
# 在第二行前追加newLine
nl testfile.txt | sed '2i newLine'
# 追加多行newLine
nl testfile.txt | sed '2a newLine\newLine'
# 将第2-5行的内容取代为newLine
nl testfile.txt | sed '2-5c newLine'
# 仅列出testfile.txt文件内的5-7行
nl testfile.txt | sed -n '5,7p'
# 显示500,600,981,888,666行的数据
sed -n "500p;600p;981p;888p;666p" phone.txt
# 数据的搜索并显示
nl testfile.txt | sed -n '/oo/p'
# 数据的搜索并删除
nl testfile.txt | sed '/00/d'
# 数据的搜索并执行命令
nl testfile.txt | sed -n '/oo/{s/oo/kk/;p;q}' # 最后的q是退出
# 数据的查找与替换
sed 's/要被取代的字符串/新的字符串/g'
# 将testfile.txt文件中每行第一次出现的oo用字符串kk替换,然后将该文件内容输出到标准输出
sed -e 's/oo/kk/' testfile.txt
# g标识符表示全局查找替换,使sed对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件
sed -e 's/oo/kk/g' testfile.txt
# 选项i使sed修改文件
sed -i 's/oo/kk/g' testfile.txt
# 批量操作当前目录下以test开头的文件
sed -i 's/oo/kk/g' ./test*
# 替换空行
sed -e '/^/s*$/d' test02.txt
sed -e '/^$/d' test02.txt
# 去掉每行的前缀空格和制表符
sed -e 's/^[ \t]*//g' test01.txt