我是 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/'