📅  最后修改于: 2020-12-08 02:59:37             🧑  作者: Mango
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目录。
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”的行。
'-e'选项允许我们一次执行多个sed命令。通过执行以下命令,我们可以执行多个sed操作:
sed -e '