这个sed命令是如何工作的?。。。。。。sed-E';s/(^-])-([^-]$)/\1xx\2/g';
我发现这个命令很难理解 我甚至找不到这个sed命令是如何工作的?。。。。。。sed-E';s/(^-])-([^-]$)/\1xx\2/g';,sed,Sed,我发现这个命令很难理解 我甚至找不到man sed下的-E选项,但该命令仍然有效。 替换没有意义,因为它在流的开始处查看,然后立即显示为管道 任何解释都将不胜感激。不确定您使用的是sed的哪个实现 看看gnu实现 参考: 不确定您正在使用的是sed的哪个实现 看看gnu实现 参考: 只要它不是三个或更多破折号序列的一部分,它就用xx替换--。|不是管道,它是另一种选择(^-])表示“行的开头,或者不是-”的字符,([^-])表示“不是-的字符,或者是行的结尾”。然后,这些组捕获的任何内容都会包含
man sed
下的-E
选项,但该命令仍然有效。
替换没有意义,因为它在流的开始处查看,然后立即显示为管道
任何解释都将不胜感激。不确定您使用的是
sed
的哪个实现
看看gnu实现
参考:
不确定您正在使用的是
sed
的哪个实现
看看gnu实现
参考:
只要它不是三个或更多破折号序列的一部分,它就用
xx
替换--
。|
不是管道,它是另一种选择(^-])
表示“行的开头,或者不是-
”的字符,([^-])
表示“不是-
的字符,或者是行的结尾”。然后,这些组捕获的任何内容都会包含在输出中,保持不变,因为我们只想在上下文中匹配它们。只要它不是三个或更多破折号序列的一部分,它就会用--
替换-
。|
不是管道,它是另一种选择(^-])
表示“行的开头,或者不是-
”的字符,([^-])
表示“不是-
的字符,或者是行的结尾”。然后,这些组捕获的任何内容都会包含在输出中,保持不变,因为我们只想为上下文匹配它们。-E
启用扩展reg.ex。在某些系统中:您需要了解更多关于正则表达式的信息。从这里开始:-E
启用扩展注册表项。在某些系统中:您需要了解更多关于正则表达式的信息。从这里开始:
sed -E 's/(^|[^-])--([^-]|$)/\1xx\2/g'
'-E'
'-r'
'--regexp-extended'
Use extended regular expressions rather than basic regular
expressions. Extended regexps are those that 'egrep' accepts; they
can be clearer because they usually have fewer backslashes.
Historically this was a GNU extension, but the '-E' extension has
since been added to the POSIX standard
(http://austingroupbugs.net/view.php?id=528), so use '-E' for
portability. GNU sed has accepted '-E' as an undocumented option
for years, and *BSD seds have accepted '-E' for years as well, but
scripts that use '-E' might not port to other older systems. *Note
Extended regular expressions: ERE syntax.