Linux 输出过滤器:sed 命令
命令 '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/'
看上面的截图,首先我们在字符串 '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'
看上面的截图,命令 「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'
看上面的截图,命令 「cat msg.txt | sed '/jtp/d'」 用于删除所有包含单词 'jtp' 的行
推荐文章: