Linux 如何指定";或;在sed中

Linux 如何指定";或;在sed中,linux,ubuntu,sed,Linux,Ubuntu,Sed,我有一个文件,其中包含以下格式的数据 <A/Here> <A/There> <B/SomeMoreDate> <C/SomeOtherDate> 但是如何指定sed包含或删除所有模式 预期产出为: <Here> <There> <SomeMoreDate> <SomeOtherDate> 您可以使用sed-i的/[ABC]//g'/path/to/filename[ABC]将匹配A或B或C。

我有一个文件,其中包含以下格式的数据

<A/Here>  <A/There>
<B/SomeMoreDate> <C/SomeOtherDate>
但是如何指定
sed
包含
删除所有模式

预期产出为:

<Here>  <There>
<SomeMoreDate> <SomeOtherDate>


您可以使用
sed-i的/[ABC]//g'/path/to/filename
<代码>[ABC]将匹配
A
B
C
。您可能会发现它很有用。

您可以使用
sed-i的//[ABC]//g'/path/to/filename
<代码>[ABC]将匹配
A
B
C
。您可能会发现这很有用。

如果您使用的是GNU sed,您可以说:

sed -r 's#(A|B|C)/##g' filename
否则,应采用以下方法:

sed 's#A/##g;s#B/##g;s#C/##g' filename

如果您使用的是GNU sed,您可以说:

sed -r 's#(A|B|C)/##g' filename
否则,应采用以下方法:

sed 's#A/##g;s#B/##g;s#C/##g' filename

Ivaylo Strandjev的答案是正确的,因为它解决了想要匹配单个字符的问题。不过,有一种方法可以在匹配较长字符串时使用或

s/\(\(stringA\)\|\(stringB\)\|\(stringC\)\)something/something else/
您可以尝试以下方法:

echo stringBsomething | sed -e 's/\(stringA\|stringB\|stringC\)something/something else/'

遗憾的是,
sed
需要所有这些反斜杠。如果使用
-r

Ivaylo Strandjev的答案是正确的,因为它解决了需要匹配单个字符时的问题。不过,有一种方法可以在匹配较长字符串时使用或

s/\(\(stringA\)\|\(stringB\)\|\(stringC\)\)something/something else/
sed "s/<[ABC]\//</g" /path/to/filename
您可以尝试以下方法:

echo stringBsomething | sed -e 's/\(stringA\|stringB\|stringC\)something/something else/'

遗憾的是,
sed
需要所有这些反斜杠。如果使用
-r

sed“s/
sed”s/预期输出是什么?@devnull我已经在我的回答中指定了预期输出什么是预期输出?@devnull我已经在我的回答中指定了预期输出,除非你撒谎,而且你的前缀不是一个字符长;然后,不能使用字符类。修复很容易,但不幸的是,不同的
sed
实现有不同的语法。尝试
s%同样,boo-hiss用于链接到整个教程。除非你撒谎并且你的前缀不是一个字符长;然后,不能使用字符类。修复很容易,但不幸的是,不同的
sed
实现有不同的语法。尝试
s%同样,boo-hiss用于链接到一个教程,该教程在整个过程中使用。是的,它确实有字符串。你能用一个小例子来说明一下吗example@JannatArora,第二个代码块是如何将“stringBsomething”更改为“其他内容”的示例。我刚刚改进了这个例子,使它的
是的,它确实有字符串。你能用一个小例子来说明它吗example@JannatArora,第二个代码块是如何将“stringBsomething”更改为“其他内容”的示例。我刚刚改进了示例,使其具有更少的
sed "s/<[ABC]\//</g" /path/to/filename