シェル スクリプトで一致したパターンの後に続く文字列を抽出する方法。Perl スクリプトではこの機能を知っていますが、シェル スクリプトでは知りません。
以下は例です。
Subject_01: これはサンプルの件名であり、異なる場合があります
「Subject_01:」に続く文字列を抽出する必要があります。
助けてください。
それはあなたのシェルに依存します。
bourneシェルまたはbashまたは (私が信じている) pdkshを使用している場合は、次のような派手なことを行うことができます。
$ string="Subject_01: This is a sample subject and this may vary"
$ output="${string#*: }"
$ echo $output
This is a sample subject and this may vary
$
これはフォーマットに関してかなり制限されていることに注意してください。上記の行では、コロンの後に 1 つのスペースが必要です。それ以上ある場合は、 の先頭がパディングされ$output
ます。
他のシェルを使用している場合は、次のcut
コマンドを使用して、次のようなことを行う必要がある場合があります。
> setenv string "Subject_01: This is a sample subject and this may vary"
> setenv output "`echo '$string' | cut -d: -f2`"
> echo $output
This is a sample subject and this may vary
> setenv output "`echo '$string' | sed 's/^[^:]*: *//'`"
> echo $output
This is a sample subject and this may vary
>
最初の例cut
では、非常に小さく単純な を使用しています。2 番目の例では を使用しておりsed
、はるかに多くのことができますが、CPU に関しては (非常に) 少し重いです。
YMMV。おそらくこれを csh で処理するより良い方法があります (私の 2 番目の例では tcsh を使用しています) が、私はほとんどのシェル プログラミングを Bourne で行っています。