我怎么能(在ubuntu下)从字符串中获取第一个整数并将该整数保存到bash中的新文本文件中?
echo $line | tr -cd [:digit:] >> $line-num.txt
321#somewords和 - numbers32452352
这导致了......
32132452352
我怎样才能得到321作为输出。
谢谢
答案 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]*
的第一部分是删除任何非数字前导字符(如果存在)。