数値文字列の出力を段落文字列として取得します。

数値文字列の出力を段落文字列として取得します。

.jarスクリプトの変数に出力が格納されています。

Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733

#では、ieの後にIDを抽出して別の変数に保存したいと思います14214733。 bashでどうすればいいですか?

編集:以下を使用して解決するecho ${var##*#}

答え1

bashを使って正規表現でキャプチャ

output='Token is: XYZ123
Not found in page: 0
Not found in page: 1
Not found in page: 2
Found with ID : #14214733'

[[ $output =~ "Found with ID : #"([0-9]+) ]] && id=${BASH_REMATCH[1]}

echo $id    # => 14214733

Bash正規表現ではリテラルテキスト部分が引用されますが、正規表現特殊コンテンツは引用されません。キャプチャされた部分はBASH_REMATCH配列に入ります。

答え2

1つの方法は次のとおりです。

sec_var=`cat ts.txt | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`
sec_var=`echo $first_var | grep -oE 'ID : #([0-9]+)' | cut -f2 -d '#'`

grep "-z"オプションも使用できます。

-z は行末の改行を抑制し、これをヌル文字に置き換えます。つまり、grepは行の終わりがどこにあるかを知っていますが、入力を1つの大きな行として扱います。

関連情報