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

bashで文字列内の単語のインデックスを見つける方法は?

Bash は、文字列内の単語分割をすべて単独で実行します。実際、多くの場合、それを回避することが問題であり、引用が非常に重要な理由です。あなたの場合、これを活用するのは簡単です。文字列を引用符で囲まずに配列に入れるだけです。bash は単語分割を使用して個々の要素を分離します。文字列が変数 $str に格納されていると仮定します 、

ar=($str) # no quotes!

5 つの要素の配列を返します。配列インデックスは単語インデックスです (ほとんどのスクリプト言語やプログラミング言語と同様に、0 からカウントアップします)。つまり、"Age" には

を使用してアクセスします。
${ar[1]}  # 0 => Name, 1 => Age, 2 => Sex, 3 => ID, 4 => Address

または、内容によって要素インデックスを見つける必要がある場合は、配列をループします。つまり、

function el_index {
    cnt=0; for el in "${ar[@]}"; do
        [[ $el == "$1" ]] && echo $cnt && break
        ((++cnt))
    done
}
el_index "Age" # => 1

$ export FOO="Name   Age Sex  ID         Address"

*Age を Age に置き換えます -- これにより、"Age" より前のものがすべて削除されます:

$ echo ${FOO/*Age/Age}
Age Sex ID Address

「Age」より前のものを取得

$ echo ${FOO/Age*/}
Name

その文字列の長さを取得します (これは「Age」のインデックスです):

$ BEGIN=${FOO/Age*/}
$ echo ${#BEGIN}
7

Linux
  1. Bashスクリプトで文字列を分割する方法

  2. 最大スタック サイズを確認するにはどうすればよいですか?

  3. 文字列にドットが含まれている場合に正確な単語をgrepする方法

  1. Linux で「find」の結果を mv にパイプする方法

  2. デフォルトのファイルマネージャを見つける方法は?

  3. Bashコマンドの最初の単語をすばやく変更するには?

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

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

  3. bashのフォルダ内の各ファイルの先頭に文字列を追加するにはどうすればよいですか?