在sed中捕获组

13 浏览
0 Comments

在sed中捕获组

我有很多形式为\n

ko04062 ko:CXCR3
ko04062 ko:CX3CR1
ko04062 ko:CCL3
ko04062 ko:CCL5
ko04080 ko:GZMA

\n的内容,我非常希望摆脱右边列的\"ko:\"部分。我正在尝试使用sed命令,如下所示:\n

echo "ko05414 ko:ITGA4" | sed 's/\(^ko\d{5}\)\tko:\(.*$\)/\1\2/'

\n但它只是输出了我输入的原始字符串。我对命令行脚本、sed和管道等都非常陌生,所以如果/当我在做一些非常愚蠢的事情时,请不要太生气。\n让我困惑的主要是,如果我将\\1\\2部分反过来写成\\2\\1,或者只使用一个组,结果仍然是一样的。我猜这意味着我对将echo的输出传递给sed的机制有所误解,或者我的正则表达式写错了,或者我使用sed的方式不对,或者sed没有打印替换结果。\n非常感谢您提供任何帮助!

0
0 Comments

问题:capturing groups in sed。

原因:使用sed命令进行字符串处理时,可能需要使用捕获组来提取特定的部分内容。

解决方法:可以使用sed命令的正则表达式功能和捕获组来实现字符串的处理和替换。

下面是一个使用bash来处理字符串的例子:

var="ko05414 ko:ITGA4"
echo ${var//"ko:"}

上述代码中,${var//"ko:"}的含义是将字符串var中的所有"ko:"都替换为空字符串""。这样就实现了对字符串的处理。

需要注意的是,sed命令中也可以使用捕获组来提取特定的部分内容。具体使用方法可以参考Manipulating Strings

对于字符串处理,sed命令的捕获组功能提供了一种简洁而强大的解决方案。因此,学习和掌握sed命令的捕获组功能对于命令行操作非常有用。

0
0 Comments

在上述文本中,提到了使用sed的捕获组(capturing groups)的问题以及解决方法。原文中提到了使用正则表达式来处理字符串,并使用sed命令进行替换操作。具体来说,提到了如何使用捕获组来提取字符串中的特定部分,并将其用于替换操作。

首先,原文中提到了一个sed命令示例,该命令使用了三个捕获组来提取字符串中的特定部分,并将其替换为新的内容。其中,第一个捕获组用于匹配以"ko"开头的5位数字,第二个捕获组用于匹配" ko:",第三个捕获组用于匹配剩余的字符串。然后,使用\1和\3来分别引用第一个和第三个捕获组,并将其替换为新的字符串。整个操作的结果被重定向到一个名为"result"的文件中。

其次,原文中还提到了另一种简化的替换操作,即直接使用"sed --posix 's/ko://'"来将字符串中的"ko:"替换为空字符串。

最后,原文中还有一些评论,其中讨论了对回答的赞赏以及一些细节问题。

原文中主要介绍了如何在sed中使用捕获组来处理字符串,并提供了使用捕获组的示例和替换操作的方法。

0
0 Comments

在使用sed命令时,输出的结果与预期不符。这可能是因为替换的部分没有匹配成功。由于你可能在使用GNU sed,可以尝试以下方法:

echo "ko05414 ko:ITGA4" | sed 's/\(^ko[0-9]\{5\}\)\tko:\(.*$\)/\1\2/'

其中,需要注意以下几点:

- \d被替换为[0-9],因为GNU sed不识别\d。

- {}被替换为\{\},因为GNU sed默认使用基本正则表达式。

然而,你仍然遇到了相同的错误。你提到你使用的是OSX系统,不确定如何确定你是否在使用GNU sed...

噢,这是重要的信息...我想OSX使用的是类似BSD的sed,而这里的共识是大多数人使用GNU sed。

这些信息非常重要!非常感谢!

在OSX上,GNU sed被称为gsed。

0