我已经把头撞到了墙上2个小时但是不能正常工作。
这就是我所拥有的:
我尝试过删除" \ r"使用来自该字符串的sed和(())希望数学表达式将截断" \ r"但仍然没有成功。请指出我的错误!
提前致谢!
下面是我从中读取字符串的文件,让我们假装我被迫阅读所有文件(Notepad ++中的屏幕截图)。
答案 0 :(得分:4)
您可以使用 awk :
awk 'BEGIN { var="133\r"; print var+3; }'
输出136
或者您可以使用 bash 参数展开:
VAR="133\r"
VAR2=${VAR%\\r}
echo $VAR
输出:133
,现在VAR2
包含\r
被剥离的数字,您可以为其添加整数。
答案 1 :(得分: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
答案 2 :(得分: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
答案 3 :(得分:2)
答案 4 :(得分:1)
您可以使用sed作为
获取号码sed 's/\([0-9]*\).*/\1/'
答案 5 :(得分:1)
如果你想用sed删除\ r,不要忘记逃避\,这对我有用:
echo "133\r" | sed 's/\\r//'
和输出133
编辑:
正如我在评论中所说:“LF对应于\ n,而不是\ r!!!! LF用于unix系统,\ r用于dos,对应CR(参见此处:en.wikipedia.org/wiki /行)“
所以你应该试试这个:
echo "133\n" | sed 's/\\n//'