本文共 1652 字,大约阅读时间需要 5 分钟。
SED(Stream Editor)被称为流编辑器,是Linux命令环境中“三剑客”之一,功能强大,能够根据命令处理数据流中的数据。命令可以在命令行中执行,也可以从文本文件中读取。
SED的工作流程如下:
所有命令处理完一行数据后,SED会读取下一行数据重复上述过程,直到处理完所有数据后终止。
正则表达式是SED命令的核心,是描述匹配规则的语言。掌握正则表达式是使用SED的关键。
CentOS 7.x
以下实例来自网络整理,仅供学习参考,实际操作需根据不同文本文件环境进行调整。
打印第一行
sed -n '1p' passwd
打印最后一行
sed -n '$p' passwd
打印第三行
sed -n '3p' passwd
打印第三行到第八行
sed -n '3,8p' passwd
打印第三行和第5行
sed -n '3p;5p' passwd
打印第三行和第五号到第八行
sed -n '3p;5,8p' passwd
打印奇数行
sed -n 'p;n' passwd
打印偶数行
sed -n 'n;p' passwd
打印每行3次
sed 'p;p' passwd
sed -n 'p;p;p' passwd
打印以mail
开始的行
sed -n '/^mail/p' passwd
删除空白行(打印非空行)
sed '/^$/d' passwd
grep -v "^$" passwd
awk '{if($0!="") print}' passwd
awk '{if(length!=0) print}' passwd
cat passwd | tr -s '\n'
删除第二行
sed '2d' passwd
删除第二行到第五行
sed '2,5d' passwd
删除第二行和第五行到第八行
sed '2d;5,8d' passwd
删除最后一行
sed '$d' passwd
删除奇数行
sed '1d;n;d' passwd
sed '1~2d' passwd
删除偶数行
sed '2d;n;d' passwd
sed '2~2d' passwd
用制表符替换文件中的空格
sed -r 's/ /\t/g' passwd
把所有小写字母用括号括起来
sed 's/[a-z]/(&)/g' passwd
(用&
代表匹配到的字母) 将格式2018/12/31
换成2018-12-31
echo "2018/12/31" | sed 's#/#-#g'
将文件中所有的root
单词替换成大写的ROOT
sed 's/\<root\>/ROOT/g' passwd
交换每行的第一个字符和第二个单词
sed -r 's/^(.)([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)/\5\2\3\4\1/' /etc/passwd
交换每行的第一个单词和最后一个单词
sed -r 's/([^a-Z]*)([a-Z]+)([^a-Z]+)(.*)([^a-Z]+)([a-Z]+)/\1\6\3\4\5\2/' passwd
交换每行的倒数第二个单词和最后一个单词
sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\4\3\2\5/' passwd
在第一行上插入
sed '1i at the top' passwd
在匹配行上插入
sed '/^the/i I am here' passwd
在第二行下面插入
sed '2a I am here' passwd
在最后一行下面插入
sed '$a at the bottom' passwd
转载地址:http://foyuk.baihongyu.com/