【发布时间】:2021-09-30 13:42:49
【问题描述】:
我有以下字符串
$A%^]I"S-)|>J&`_@;!UVPOSM\
IV&|M
这包含特殊字符,因此Bash 无法正确解释,除非被引用
第一个字符串只是A-Z范围的替换
我尝试了以下
tr1
read -r A
tr $A A-Z
tr2
read -r A
tr "$A" A-Z
使用sed
read -r A
sed "y/${A}/ABCDEFGHIJKLMNOPQRSTUVWXYZ/"
read -r A
sed 'y/'$A'/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
read -r A
sed 'y/'${A}'/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
他们都没有工作。此外,在read 中使用选项-ps 也不起作用。
tr 的错误是
tr: range-endpoints of 'S-)' are in reverse collating sequence order
sed 出错
sed: -e expression #1, char 56: unterminated `y' command
将第一个字符串翻译成 A-Z 时的输出将给出“FUNKY”
如何解决?
【问题讨论】:
-
read -r A会读一行。你有两条线。'y/'$A'/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'我不明白 - 你想替换什么。在什么地方? -
是的。它将自动将第二行中的命令应用于下一个输入。所以,我不需要阅读第二行
-
不,它不会,
read读取一行。它是什么”?use it in tr and sed如何你想“使用”这个字符串?How to resolve this?tr错误是正确的 - 字符串是tr的无效参数。至于sed,换行换成\n。 -
“它”指的是在线IDE
-
所有的 STDIN 将一次性提供。因此,在线 IDE 会自动将该命令应用于所有剩余的输入行