Linux 输出过滤器:sed 命令 0 个改进

命令 'sed' 表示流编辑器. 你可以使用该命令通过正则表达式编辑流(文件)。但这种方式编辑不是持久的。它仅仅保留在显示器上,实际上,文件内容没有变化。

语法:

command | sed 's/<oldWord>/<newWord>/'  

例子:

echo class7 | sed 's/class/jtp/'  
echo class7 | sed 's/7/10/'  
cat msg.txt | sed 's/learn/study/'  

Linux Sed Filter1

看上面的截图,首先我们在字符串 'class7' 上执行 'sed' 命令,使得 'class' 变成了 'jpt' 和 7变成了10。之后我们在输入流 'msg.txt' 中执行 'sed' 命令,使得 'learn' 转换成 'study'。


全局替换

在前面的例子,所有的 'learn' 单词没全部变成 'study' 。 为了能全部替换,我们应使用全局替换 'g' 。它可以替换文本或字符串中所有指定单词。

语法:

command | sed 's/<oldWord>/<newWord>/g'  

例子:

echo class7 class9 | sed 's/class/jtp/g'  
cat msg.txt | sed 's/learn/study/g'  

Linux Sed Filter2

看上面的截图,命令 「echo class7 class9 | sed 's/class/jtp/g'」 将所有的 'class' 转换为 'jtp',同样命令 「cat msg.txt | sed 's/learn/study/g'」 将所有的 'learn' 都转换为 'study'。


删除一行

'/d' 参数可以让你从文件中删除一整行。你只需要在某行指定一个单词后使用 '/d' 参数,就能将该行删除。同时请注意,所有具有相同单词的行也会删除。

语法:

cat <fileName> | sed '/<Word>/d'  

例子:

cat msg.txt | sed '/jtp/d'  

Linux Sed Filter3

看上面的截图,命令 「cat msg.txt | sed '/jtp/d'」 用于删除所有包含单词 'jtp' 的行

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!