sed
コマンドを使用して、指定されたパターンに基づいて特定の文字列を抽出するには、次のようなコマンドを使用できます。
echo "aaa_bbb-ccc-dd1-ee2-ff3-123.456.789-auto202406202146" | sed 's/\(.*\)-[0-9]\+\.[0-9]\+\.[0-9]\+-.*$/\1/'
このコマンドの説明は以下の通りです:
-
echo "aaa_bbb-ccc-dd1-ee2-ff3-123.456.789-auto202406202146"
は、サンプル文字列を出力します。 -
sed 's/\(.*\)-[0-9]\+\.[0-9]\+\.[0-9]\+-.*$/\1/'
は、sed
コマンドを使って文字列を変換します。-
\(.*\)
は、最初の部分をキャプチャします(.*
は任意の文字列にマッチします)。 -
-[0-9]\+\.[0-9]\+\.[0-9]\+-
は、-数字.数字.数字-
のパターンにマッチします。 -
.*$
は、文字列の残りの部分にマッチします。 -
\1
は、キャプチャした最初の部分を参照します。
-
このコマンドを実行すると、指定された文字列から目的の部分が抽出されます。
指定されたパターンに基づいて特定の文字列(後半の部分)を抽出するためには、次のようなsed
コマンドを使用できます。
echo "aaa_bbb-ccc-dd1-ee2-ff3-123.456.789-auto202406202146" | sed 's/.*-\([0-9]\+\.[0-9]\+\.[0-9]\+-.*\)$/\1/'
このコマンドの説明は以下の通りです:
-
echo "aaa_bbb-ccc-dd1-ee2-ff3-123.456.789-auto202406202146"
は、サンプル文字列を出力します。 -
sed 's/.*-\([0-9]\+\.[0-9]\+\.[0-9]\+-.*\)$/\1/'
は、sed
コマンドを使って文字列を変換します。-
.*-
は、文字列の最初の部分にマッチし、-
で終わる部分までをキャプチャしません。 -
\([0-9]\+\.[0-9]\+\.[0-9]\+-.*\)
は、-数字.数字.数字-文字列
のパターンをキャプチャします。 -
\1
は、キャプチャした部分を参照します。
-
このコマンドを実行すると、指定された文字列の後半部分が抽出されます。