Linux 在BASH中,如何替换使用HTML编写的文件中存在的变量<;textarea></textarea>;
如何替换\r\nLinux 在BASH中,如何替换使用HTML编写的文件中存在的变量<;textarea></textarea>;,linux,bash,fedora,archlinux,bash4,Linux,Bash,Fedora,Archlinux,Bash4,如何替换\r\n #!/bin/bash ... # setup if [[ $i =~ $screen ]]; then ORIGINAL=${BASH_REMATCH[1]} # original value is: 3DROTATE\r AFTER =${ORIGINAL/\\r/} # does not replace \r myThirdPartyApplication -o $replvar # FAILS b
#!/bin/bash
...
# setup
if [[ $i =~ $screen ]]; then
ORIGINAL=${BASH_REMATCH[1]} # original value is: 3DROTATE\r
AFTER =${ORIGINAL/\\r/} # does not replace \r
myThirdPartyApplication -o $replvar # FAILS because of \r
fi
只需使用文字
^M
字符,它对bash没有任何意义。您可以使用sed,即
AFTER=`echo $ORIGINAL | sed 's/\\r//g'`
这将删除第一个\r\n
AFTER="${ORIGINAL/$'\r'/}"
如果需要删除所有字符,请使用${ORIGINAL/$'\r'/}另一个选项是使用“tr”删除字符,或将其替换为\n或其他任何内容
ORIGINAL=$(echo ${BASH_REMATCH[1]} | tr -d '\r')
与@tharrk的方法类似,此参数替换也删除了最后一个'\r':
AFTER="${ORIGINAL%'\r'}"
在
=
IMHO周围不能有空格这是最好的答案,因为它避免了启动外部程序(如sed或tr)的开销。$'\r'开头的$对于将要替换的内容模式中的\r转换为“回车”字符至关重要。可能不太明显,将\r替换为零(在最后一个/和}之间没有字符。它在开头也会删除$。酷。工作!!!只是有一点改进:值分配中不允许使用空格:AFTER=echo。。。