10

我如何替换\r?

#!/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
4

5 回答 5

19

这应该删除第一个 \r。

AFTER="${ORIGINAL/$'\r'/}"

如果您需要删除所有这些,请使用 ${ORIGINAL//$'\r'/}

于 2013-04-25T07:43:07.210 回答
10

您可以使用 sed,即

AFTER=`echo $ORIGINAL | sed 's/\\r//g'`
于 2011-10-17T22:48:57.260 回答
4

另一种选择是使用 'tr' 删除字符,或将其替换为 \n 或其他任何内容。

 ORIGINAL=$(echo ${BASH_REMATCH[1]} | tr -d '\r')
于 2013-06-10T13:16:18.617 回答
3

只是使用一个字面^M字符,它没有任何 bash 的意义。

于 2011-10-17T22:48:02.803 回答
2

与@tharrrk 的方法类似,此参数替换也删除了最后一个'\r':

AFTER="${ORIGINAL%'\r'}"
于 2013-10-08T00:51:27.317 回答