ksh:用星号替换单词会导致错误的替换错误
ksh: Replacing a word with asterisks causes bad substitution error
我正在尝试用相同长度的星号替换从文件中读取的特定单词。
例如;
猫 -> ***
蛇 -> *****
因此,在我下面的脚本中,它在 bash 中有效,但在 ksh
中无效
for next in `cat $filename`; do
rep=${next//[^\"]/*}
echo "$next replace with $rep"
done;
运行 它在 ksh 中给我一个错误的替换错误,有什么想法吗?
谢谢
在旧版本的 ksh 中,您必须使用 sed 命令:
for next in `cat $filename`; do
rep=$(print $next | sed 's/[^\"]/*/g')
echo "$next replace with $rep"
done;
您可以使用 tr
:
rep=$(printf "%s" "$next" | tr -c '"' '*')
我正在尝试用相同长度的星号替换从文件中读取的特定单词。 例如; 猫 -> *** 蛇 -> *****
因此,在我下面的脚本中,它在 bash 中有效,但在 ksh
中无效for next in `cat $filename`; do
rep=${next//[^\"]/*}
echo "$next replace with $rep"
done;
运行 它在 ksh 中给我一个错误的替换错误,有什么想法吗? 谢谢
在旧版本的 ksh 中,您必须使用 sed 命令:
for next in `cat $filename`; do
rep=$(print $next | sed 's/[^\"]/*/g')
echo "$next replace with $rep"
done;
您可以使用 tr
:
rep=$(printf "%s" "$next" | tr -c '"' '*')