如何使用 awk 删除两个字符之间的文本

如何使用 awk 删除两个字符之间的文本

我想知道如何删除此表达式的“<”和“>”之间的所有内容:

i`<    1|   |    1>      -1.0000000000000

结果可能是这样的:

i-1.00000000

我尝试使用 awk 但只能删除“>”的右侧或部分的左侧

awk -F '>' '{print $2}' 

此致

答案1

通过管道传输数据sed

... | sed -e 's/<.*>//'

正则表达式匹配“ <”,后跟任意数量的任意字符,后跟“ >”,并将其替换为空字符串“ //”。

答案2

我会用sed

$ echo 'i<    1|   |    1>      -1.0000000000000' | sed 's/<[^-]*//'
i-1.0000000000000

答案3

您可以使用正则表达式FSfor awk,并打印匹配项之前和之后的字段:

echo 'i<    1|   |    1>      -1.0000000000000' | awk -F'<[^>]*> *' '{print $1 $2}'

答案4

echo 'i<    1|   |    1>      -1.0000000000000' |perl -pe 's/<.*>//;s/\s+/ /'

:)

相关内容