📜  Linux Sed命令

📅  最后修改于: 2020-12-08 02:59:37             🧑  作者: Mango

Linux sed命令| Linux Stream编辑器

Linux的“ sed”命令代表流编辑器。它用于使用正则表达式编辑流(文件)。但是这种编辑不是永久的。它仅保留在显示中,但实际上,文件内容保持不变。

主要用于文本替换;此外,它还可用于其他文本操作操作,如插入,删除,搜索等。 sed命令允许我们编辑文件而无需打开它们。正则表达式支持使其成为功能更强大的文本处理工具。

句法:

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

选项:

以下是sed命令的一些命令行选项:

-n,–quiet,–silent:它有力地允许我们print图案空间。

-e脚本,–expression = script:用于将脚本添加到要执行的命令中。

-f脚本文件,–file =脚本文件:用于将脚本文件的内容添加到要执行的命令中。

–follow-symlinks:用于原位处理时遵循符号链接。

-i [SUFFIX],-in-place [= SUFFIX]:用于就地编辑文件(如果提供SUFFIX选项,则创建备份)。

-l N,–line-length = N:用于为“ l”命令指定所需的换行长度。

–posix:用于禁用所有GNU扩展。

-E,-r,-regexp-extended:它允许我们在脚本中使用扩展的正则表达式(出于可移植性,请使用POSIX -E)。

-s,–separate:用于将文件视为独立文件,而不是单个文件,并继续长流。

–sandbox:用于在沙箱模式下运行。

-u,–unbuffered:用于从输入文件中加载最少的数据,并更频繁地刷新输出缓冲区。

-z,–null-data:用于用NUL字符分隔行。

–help:用于显示帮助手册。

–version:用于显示版本信息。

sed命令示例

让我们看下面的例子:

应用于STDIN目录

sed命令不仅限于操作文件;它还可以用来控制文件。同样,我们可以将其应用于STDIN目录。

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

上面的命令将用第二个文本模式替换第一个文本。考虑以下输出:

从上面的输出中,首先,我们对字符串“ class7”执行了“ sed”命令,其中“ class”被更改为“ jtp”,而7被更改为10。然后,我们对流“ msg.txt”执行了“ sed”命令。 “将“学习”转换为“学习”。

全球替代

在较早的示例中,所有“学习”字词均未编辑为“学习”字词。要编辑每个单词,我们必须使用全局替换“ g”。它将编辑文件或字符串中的所有指定单词。

句法:

command | sed 's///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'“,所有的“学习”都转换为“学习”。

删除线

'd'选项将使我们从文件中删除整行。我们只需要使用'd'选项从该行中指定一个单词,该行将被删除。但是,请注意,将删除所有具有相同单词的行。它将被执行为:

cat  | sed '//d'  

考虑以下命令:

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

上面的命令将删除包含单词“ jtp”的行。考虑以下输出:

从上面的输出中,通过执行命令“ cat msg.txt | sed'/ jtp / d'”,删除所有包含单词“ jtp”的行。

使用Multiple sed命令

'-e'选项允许我们一次执行多个sed命令。通过执行以下命令,我们可以执行多个sed操作:

sed -e '