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

バッシュの場合:

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 に答える
0

使用grep:

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