3

すでに2時間頭を壁にぶつけていますが、うまく機能しません.
ここに私が持っているものがあります:

  • 文字列、たとえば 133 の末尾に「\r」を付けると、「133\r」になります。
  • 上記の文字列の数値に加算したい整数。

その文字列から sed を使用して "\r" を削除しようとしましたが、数式が "\r" を切り捨てることを期待して (( )) だけを削除しましたが、まだ成功しませんでした。私の間違いを指摘してください!

前もって感謝します!
以下は、文字列を読み取ったファイルです。このすべてのファイルを強制的に読み取らなければならないふりをしましょう (Notepad++ のスクリーンショット)。

4

6 に答える 6

3

sed部分文字列を削除する必要はありません。bashあなたのためにそれを行うことができます。

#!/usr/bin/env bash

mystr="133\r"
myint=2

newstring=${mystr%\\r}               # Remove the substring "\r" from $mystr
myanswer=$(expr $newstring + $myint) # Add the two numbers
echo $myanswer                       # 135
于 2013-06-06T12:43:36.677 に答える
3
$ a=$'133\r'
$ printf "%s" "$a" | od -c
0000000   1   3   3  \r
0000004
$ echo $((a+3))
")syntax error: invalid arithmetic operator (error token is "
$ echo $(( ${a%[[:space:]]} + 3 ))
136
于 2013-06-06T13:00:52.447 に答える
2

シンプルなソリューション

a="133\r"
b=${a/\\r/}

またはさらに単純な

b=${a%\\r}

それはchepnerによって提案されたように

于 2013-06-06T12:35:56.507 に答える