sed:Stream Editor文本流编辑,可以处理多个文件多行的内容。
格式:sed [选项]... {脚本(如果没有其他脚本)} [输入文件]...
选项参数:
-n :只打印模式匹配的行
-e :直接在命令行模式上编辑,此为默认选项
-f :文件操作,用 –f filename 执行filename内的sed动作
-r :支持扩展表达式
-i :直接修改文件内容
常用命令参数:
p : 打印,可以打印某一行,或者多行
d : 删除,可以删除一行,多行
s : 替换,用于字符替换。 如: s/kimbo/kim/g
a : 追加,指定行的 下一行
i : 插入,指定行的 上一行
替换or删除:
s/查找的字符/替换的字符/g (g:表示全局,全部替换。不加,默认只替换一次。),查找的字符串 可以使用正则表达式。
sed 's/kimbo/zhang/g' kimbo_test.txt #将文件中的kimbo都替换成zhang
sed 's/[ ]//g' kimbo_test.txt #将文件中的空格、tab删除 ,并不改变文件内容。
sed -i 's/[ ]//g' kimbo_test.txt #将文件中的空格、tab删除 ,改变文件内容。
例子1:
#1. 打印第二行 sed -n '2p' kimbo_test.sh #2. 打印第二行,第三行 sed -n '2,3p' kimbo_test.sh #3. 打印匹配"kevi"的行 sed -n '/kevi/p' kimbo_test.sh #4. 打印匹配"kevi"的行,到第三行 sed -n '/kevi/,3p' kimbo_test.sh #5. 打印不匹配"kevi"的行 sed -n '/kevi/!p' kimbo_test.sh #5.删除匹配"kevi"的行,输出其他行 cat kimbo_test.sh |sed -e '/kevi/d' #5. 删除所有空行 cat kimbo_test.sh |sed -e '/^$/d' #6.保留第3行之后的非空行 cat kimbo_test.sh |sed -e '3,/^$/!d;/^$/d' #p --print 打印;d --delete 删除
结果截图: