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/^[^#]/&/
,这只在不以
开头的行上进行替换。