GNU/Linux >> Linux の 問題 >  >> Linux

bash - 部分文字列の文字列インデックス位置を見つける

パラメータ展開を使用:

t="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
searchstring="IP for"

rest=${t#*$searchstring}
echo $(( ${#t} - ${#rest} - ${#searchstring} ))

$rest には $t after の部分が含まれます $検索文字列.したがって、部分文字列の開始位置は、文字列全体の長さから $rest の長さを引いて $searchstring 自体の長さを引いたものになります。


より多くのケース (「#」と「##」、および「IP for」のインスタンスが複数あることを考慮してください) に適しているのは、一致する文字列から最後まで削除し、残りの長さを使用することです。

text="MULTI: primary virtual IP for xyz/x.x.x.x:44595: 10.0.0.12"
search="IP for"

prefix=${text%%$search*}
echo ${#prefix}

Linux
  1. Bashブレースの拡張と変数?

  2. Pythonで文字列に部分文字列が含まれているかどうかを確認する

  3. Bashで文字列の長さを見つける方法[クイックヒント]

  1. 文字列にBashの部分文字列が含まれているかどうかを確認する方法

  2. bash ディレクトリ検索

  3. bash のテキスト文字列を配列に変換する

  1. 文字列内のパターンを見つけるためのシェルテスト?

  2. 「bash -c」は何をしますか?

  3. bash履歴の検索位置をリセット