範囲区切り文字から3番目のテキストセットを抽出する

範囲区切り文字から3番目のテキストセットを抽出する

ファイル.txt1行が含まれます:

[MOVING] From [/source/foo.txt] to [/dest/bar.txt]

基本的に、角かっこのペア内から3番目のグループを抽出する正規表現を探したいと思います。[]

予想する /dest/bar.txt

これまで、私は次のことを思い出しました。

$> cat file.txt | grep ".*From.*to.*" | grep -oP  '(?<=to ).*$' | cut -d "[" -f 2 |  cut -d "]" -f 1

動作しますが、エレガントなソリューションとはまったく異なります。誰でもこれを達成する方法を知っていますか?

ベストアンサー1

grep -o '\[[^]]*\]$' file.txt | sed 's/\[//; s/\]//'

これにより、grepが行末に固定され、角かっこと必要なテキストが抽出されます。このsedコマンドは括弧を削除します。

おすすめ記事