使用bash从txt文件中获取第一个整数

时间:2015-01-03 13:08:37

标签: linux bash integer extract

我怎么能(在ubuntu下)从字符串中获取第一个整数并将该整数保存到bash中的新文本文件中?

这一行是我正在使用的bash循环...

echo $line | tr -cd [:digit:] >> $line-num.txt

我的字符串看起来像这样......

321#somewords和 - numbers32452352


这导致了......

32132452352

我怎样才能得到321作为输出。

谢谢

3 个答案:

答案 0 :(得分:2)

使用纯BASH:

line='321#somewords-and-numbers32452352'
[[ "$line" =~ ^[^0-9]*([0-9]+) ]] && echo "${BASH_REMATCH[1]}"
321

或使用sed

sed 's/^[^0-9]*\([0-9]\+\).*$/\1/' <<< "$line"
321

答案 1 :(得分:2)

echo 'abc321#somewords-and-numbers32452352' | grep -oP '^[^0-9]*\K[0-9]+'

输出:

321

答案 2 :(得分:1)

使用sed和字符串匹配来返回字符串中的第一个数字。

echo $line | sed -e 's/^[^0-9]*\([0-9][0-9]*\).*/\1/'

正则表达式[^0-9]*的第一部分是删除任何非数字前导字符(如果存在)。