我有一个文件,每行包含一个
形式的字符串string1.string2:\string3{string4}{number}
我要提取的是数字。我已经搜索并尝试使用sed或bash完成此操作,但失败了。任何帮助将不胜感激。
编辑1:字符串可能包含数字。
答案 0 :(得分:5)
$ echo 'string1.string2:\string3{string4}{number}' |\
cut -d'{' -f3 | cut -d'}' -f 1
number
答案 1 :(得分: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
答案 2 :(得分:0)
使用grep
:
grep -o '\{[0-9]\+\}' | tr -d '[{}]'
答案 3 :(得分: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]}