替换多行文本

时间:2018-06-08 09:05:38

标签: bash replace output lines

我尝试替换我的bash输出的一些文本部分。我的bash输出如下:

vserver            policyname  clientmatch  rorule rwrule superuser
------------------ ----------- ------------ ------ ------ ---------
Vserver1           Volume1     Host1        sys    never  sys
Vserver2           Volume2     Host2        sys    never  sys
Vserver3           Volume3     Host3        sys    none   never
Vserver4           Volume4     Host4        sys    never  sys
Vserver5           Volume5     Host5        sys    sys    sys

我想替换:

sys with true
没有假的 从来没有假的

我怎么能这样做?我的输出一次显示所有行,这个尝试对我不起作用:

RED_TEXT=$(tput setaf 1)
GREEN_TEXT=$(tput setaf 2)
BOLD_TEXT=$(tput bold)
RESET_TEXT=$(tput sgr0)

true=${GREEN_TEXT}true${RESET_TEXT}
false=${RED_TEXT}false${RESET_TEXT}

echo "$OUTPUT" | sed "s/sys/${true}/g" | sed "s/never/${false}/g" | sed "s/none/${false}/g"

我做错了什么?

谢谢你,最诚挚的问候!

1 个答案:

答案 0 :(得分:0)

你可以试试这可能对你有帮助吗?

echo **-n** "$OUTPUT" | sed "s/sys/${true}/g" | sed "s/never/${false}/g" | sed "s/none/${false}/g"

echo **-n** "$OUTPUT" | sed -e 's/sys/${true}/g' | sed -e 's/none/${false}/g' | sed -e 's/never/${false}/g'