0

我有一个文件,每行包含一个字符串

string1.string2:\string3{string4}{number}

我要提取的是数字。我已经搜索并尝试了一段时间使用 sed 或 bash 完成此操作,但失败了。任何帮助将非常感激。

编辑 1:字符串可能包含数字。

4

4 回答 4

5
$ echo 'string1.string2:\string3{string4}{number}' |\
  cut -d'{' -f3 | cut -d'}' -f 1
number
于 2012-09-05T13:31:41.327 回答
2

使用 sed:

sed 's/[^}]*}{\([0-9]*\)}/\1/' input_file 

描述:

[^}]*}      : match anything that is not } and the following }
{\([0-9]*\)}: capture the following digits within {...}
/\1/        : substitute all with the captured number
于 2012-09-05T13:40:10.773 回答
0

使用grep

grep -o '\{[0-9]\+\}' | tr -d '[{}]'
于 2012-09-05T13:32:31.640 回答
0

在 bash 中:

sRE='[[:alnum:]]+'
nRE='[[:digit:]]+'
[[ $str =~ $sRE\.$sRE:\\$sRE\{$sRE\}\{($nRE)\} ]] && number=${BASH_REMATCH[1]}

如果您的文本文件足够统一,您可以删除正则表达式的第一部分:

[[ $str =~ \\$sRE{$sRE}{($nRE)} ]] && number=${BASH_REMATCH[1]}

甚至

[[ $str =~ {$sRE}{($nRE)} ]] && number=${BASH_REMATCH[1]}
于 2012-09-05T13:40:07.277 回答