我试图在这里找到解决方案,但不能;给出像
这样的字符串ABC3
DFGSS34
CVBB3
如何提取整数以便我得到
3
34
3
...
答案 0 :(得分:25)
只需一个简单的sed命令即可完成任务:
sed 's/[^0-9]//g' file.txt
3
34
3
答案 1 :(得分:13)
对于仅限bash的解决方案,您可以使用参数模式替换:
pax$ xyz=ABC3 ; echo ${xyz//[A-Z]/}
3
pax$ xyz=DFGSS34 ; echo ${xyz//[A-Z]/}
34
pax$ xyz=CVBB3 ; echo ${xyz//[A-Z]/}
3
它与sed
解决方案非常相似,但具有不必分叉另一个进程的优点。对于小型工作而言,这可能并不重要,但我遇到过这样的情况,即文件的许多行都有这种情况,并且非分叉是一个显着的速度提升。
答案 2 :(得分:8)
如何使用tr
?
for s in ABC3 DFGSS34 CVBB3 ; do
tr -cd 0-9 <<<"$s"
echo
done
答案 3 :(得分:7)
grep
版本怎么样?
grep -o '[0-9]*' file.txt