Linux-Bash-sed命令
有人能给我解释一下Linux-Bash-sed命令,linux,unix,sed,Linux,Unix,Sed,有人能给我解释一下/#&/在这个命令中做了什么吗cat/etc/services | sed's/*/#&/'>services.tmp它在每一行前面加了一个 s//构造执行正则表达式替换。搜索的对象是零个或多个 任何字符*。替换为#,后跟匹配的任何文本。其效果是输出带有#前缀的每一行 等价物是: sed 's/^/#/' 上面匹配行的开头(但不匹配任何字符),并将其替换为 在这两种情况下,所有行(甚至空行)都匹配。投票迁移到SU。您是否想过尝试从主目录运行此操作?它将创建一个新的servic
/#&/
在这个命令中做了什么吗cat/etc/services | sed's/*/#&/'>services.tmp
它在每一行前面加了一个
s//构造执行正则表达式替换。搜索的对象是零个或多个
任何字符*
。替换为#
,后跟匹配的任何文本。其效果是输出带有#
前缀的每一行
等价物是:
sed 's/^/#/'
上面匹配行的开头(但不匹配任何字符),并将其替换为
在这两种情况下,所有行(甚至空行)都匹配。投票迁移到SU。您是否想过尝试从主目录运行此操作?它将创建一个新的
services.tmp
文件,您可以检查该文件,而无需在此处发布问题。@JimGarrison您是否认为我是Linux新手,我不知道这会起什么作用,所以在更改系统之前我想问一下。我很抱歉。如果你来自Windows背景,我能理解你会害怕的。破坏Linux系统要困难得多(只要您不是以root身份登录)。您可以在主目录中运行它,它将创建一个新的文件services.tmp
,然后您可以检查该文件。然而,这并没有改变这样一个事实,即这个问题与SO无关。因此,它将具有文件名(.something)的每一行都变成一条注释?@redf150flames No,
匹配一个字符,而不是一个文字点/句点。你应该了解正则表达式。另外,不要忘记Linux中的文件名不需要包含句点。这是一个愚蠢的DOS想法,并在现代Windows中流行。因此,简单来说,它将每一行都变成一条注释?是的,有效地,因为/etc/services
使用#
作为注释标记。如果您想避免注释重复,可以使用s/^[^#]/&/
,这只在不以开头的行上进行替换。