Sed命令总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sed命令总结相关的知识,希望对你有一定的参考价值。
sed命令:
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。
语法:
sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
常用选项:
-e:允许在同一行里执行多条命令
-n:和p命令一起使用表示只打印那些发生替换的行
-i:直接编辑源文件
-r:使用扩展正则表达式
-f<script文件>:指定的script文件来处理输入的文本文件
-h:显示帮助;
-V:显示版本信息。
示例:
sed 's/book/books/' file 文本中的book替换成books(每行第一个book)
sed 's/book/books/g' file 文本中所有的book替换成books
sed -n 's/test/TEST/p' file 表示只打印文本中发生替换的行
sed -n '1,4'p 1.txt 打印指定的行
sed -n '/root/'p 1.txt 打印包含指定字符串的行
sed -i 's/book/books/g' file 表示直接修改源文件,文本中所有的book替换成books
sed -i 's/^/#&/' 1.txt 表示每行行首添加#号,直接修改文件
sed '/^$/d' file 删除空白行(注意:d是在后面的,s命令在前面)
sed '2d' file 删除第二行
sed '2,$d' file 删除第二行到末行所有行
sed '$d' file 删除最后一行
sed 's/[0-9]//g' 1.txt 删除所有数字(实际上是所有数字替换成空了)
sed 's/[^0-9]//g' 1.txt 删除所有非数字
sed 's/^192/localhost&/' file 所有以192开头的行都会在行首加上localhost
echo "a handsome boy"| sed 's/\w\+/[&]/g' \w\+ 匹配每一个单词,[&] 替换它,& 表示所匹配到的单词; 结果:[a] [handsome] [boy]
sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' 1.txt == sed 's#\(root\)\(.*\)\(bash\)#\3\2\1#' 1.txt
表示:调换两个字符串位置; /可以使用 #,@ 等
sed -e '/root/p' -e '/body/p' -n 1.txt == sed -n '/root/p; /body/p' 1.txt
实现同时进行多个任务;会显示root或者body的行
sed -n 'p;n' 1.txt == sed -n '1~2p' 1.txt 打印奇数行
sed -n 'n;p' 1.txt == sed -n '2~2p' 1.txt 打印偶数行
first~step 表示以first开始,后面每次加step;例如1~2:表示所有的奇数行
sed '=' 1.txt | sed 'N;s/\n/\t/' 显示行号,‘=’ 命令能显示行号,但是行号是单独的一行,若想行号后面跟该行的内容,需要再进行处理
sed G 1.txt 在每一行后面插入一个空行
sed '{x;p;x}' 1.txt 在每一行前面插入一个空行
练习:
把/etc/passwd 复制到/root/test.txt
打印所有行
打印test.txt的3到10行
打印test.txt 中包含 'root' 的行
删除test.txt 的15行以及以后所有行
删除test.txt中包含 'bash' 的行
替换test.txt 中 'root' 为 'toor'
替换test.txt中 '/sbin/nologin' 为 '/bin/login'
删除test.txt中5到10行中所有的数字
删除test.txt 中所有特殊字符(除了数字以及大小写字母)
把test.txt中第一个单词和最后一个单词调换位置
把test.txt中出现的第一个数字和最后一个单词替换位置
把test.txt 中第一个数字移动到行末尾
在test.txt 20行到末行最前面加 'aaa:'
以上是关于Sed命令总结的主要内容,如果未能解决你的问题,请参考以下文章