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

bashで文字列から最後の数字を取得するにはどうすればよいですか?

extglob でパラメーター展開を使用できます。最初に末尾の数字を削除し、次に最初から取得したものを削除します。

#!/bin/bash
shopt -s extglob
for str in str1s2 djfs1d2.3 fefwfw4rfe45 234ef8 ; do
    without_number=${str%%+([0-9])}
    echo ${str#$without_number}
done

必要なのは grep -Eo '[0-9]+$' だけです :

[email protected]:~$ echo 234ef85 |grep -Eo '[0-9]+$'          ## --> 85
[email protected]:~$ echo 234ef856 |grep -Eo '[0-9]+$'         ## --> 856
[email protected]:~$ echo 234ef85d6 |grep -Eo '[0-9]+$'        ## --> 6
[email protected]:~$ echo 234ef85d.6 |grep -Eo '[0-9]+$'       ## --> 6
[email protected]:~$ echo 234ef85d.6. |grep -Eo '[0-9]+$'      ## --> no result
[email protected]:~$ echo 234ef85d.6.1 |grep -Eo '[0-9]+$'     ## --> 1
[email protected]:~$ echo 234ef85d.6.1222 |grep -Eo '[0-9]+$'  ## --> 1222

Linux
  1. Bashで文字列を16進数として読み取る方法は?

  2. Bashで変数が数値かどうかをテストするにはどうすればよいですか?

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

  1. Bashの配列から一意の値を取得するにはどうすればよいですか?

  2. bashでループの終了ステータスを取得する方法

  3. bash でディスク上で利用可能なバイト数のみを取得するにはどうすればよいですか?

  1. bashコマンド文字列の逐語的な文字を確認するにはどうすればよいですか?

  2. bashからネットマスクを取得するには?

  3. コマンドラインから IP アドレスを取得するにはどうすればよいですか?