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は、キャプチャした部分を参照します。
-
このコマンドを実行すると、指定された文字列の後半部分が抽出されます。