ファイルがありますinput.txt
にはいくつかの文字列があり、各文字列にはいくつかの値が割り当てられています。
私の仕事は、任意の文字列に割り当てられている番号を抽出するPerlスクリプトを作成することです。
たとえば、このinput.txt
Tom=0×1234,Bob=0x4567,rock=0x8912.
rock
に割り当てられている値を抽出する必要があります。
これを行うには、スクリプトの作成に多少の助けが必要です。
@terdonの1つのバリエーション-各/rock=(...)/に対して、次のように言います:
Perl -nE 'say for /rock=(\w+)/'
およびgrepを使用したソリューション
grep -Po 'rock=\K\w+' file
1つの方法を次に示します。
_$ Perl -lne '/rock=([^.,]+)/ && print $1' file
0x8912
_
/rock=([^.]+)/
は文字列_rock=
_と一致し、1つ以上の非_.
_文字(_[^.]+
_)の最長ストレッチをキャプチャします。括弧は一致を「キャプチャ」し、_$1
_として使用できるようにします。これが一致する場合、_$1
_が出力されます。
_-l
_は、各入力行から末尾の改行を削除し、各print
呼び出しに改行を追加します。 _-n
_は、入力ファイルを1行ずつ読み取り、_-e
_で指定されたスクリプトを各行に適用するようPerl
に指示します。