使用 sed 删除两个字符之间的文本

使用 sed 删除两个字符之间的文本

我是 shell 脚本和 sed 的新手,需要帮助删除两个指定字符之间的文本(不包括字符)。我需要删除 > 和 = 之间的文本

例如

> hello the email is = 123@gmail

变成

123@gmail

目前我已经有了,但它甚至没有输出结果。

sed -e 's/\('>'\).*\(=\)/\1\2/' file.txt > fileEdited.txt

答案1

用于sed对想要传递的元素进行分组:

sed -e 's/^>.*= \(.*\)/\1/' file.txt

在这里,替换的匹配^>.*= \(.*\)以插入符号开头,以确保匹配行首的尖括号。然后.*匹配>和之间的所有内容=。 之后有一个文字空格,=但可以替换为 以\s*匹配任何空格。该组抓取替换段上\(.*\)剩余的所有内容。\1

以下是一行中要测试的全部内容:

echo "> hello the email is = 123@gmail" | sed -e 's/^>.*=\s*\(.*\)/\1/'

相关内容