各文の末尾に[xxx][xxxx]パターンのあるパターンを抽出する方法

各文の末尾に[xxx][xxxx]パターンのあるパターンを抽出する方法

次の文を含むファイルがあります。

..........[xxxx][xxxx]
..........[xxxx][xxxx]
..........[xxxx][xxxx]

各文の末尾に[][]が2つあります。 [][]と[][]の対応する内容を新しいファイルに抽出する方法は次のとおりです。

[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]

私は成功せずにターミナル正規表現を試しました。ありがとう、

答え1

grepgrepGNU(またはこのオプションをサポートする他のツール-o)を使って試してみてください。

grep -o '\[[^]]*\]\[[^]]*\]$' file > new_file

出力:

[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]

答え2

grepをサポート-oし、他のことをしない場合は、[最初の後のすべてをしたいです[

$ grep -oP '[^]]*\K\[.*' file 
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]

[望ましくない他のものがある場合は、以下を試してください。

$ grep -oP '.*\K\[.+?\]\[.*' file 
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]

grepサポートがなければ-o(私は信じています。ちょうどmacOS) 次のように使用できます。

$ sed -E 's/.*(\[.+?\]\[.*)/\1/' file 
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]

答え3

POSIX sed:

sed 's/.*\(\[[^]]*\]\[[^]]*\]\)$/\1/' file
  • \[[^]]*\]-others[以外の数字と一致します。]]
  • \(\[[^]]*\]\[[^]]*\]\)$\(\)最初と唯一のキャプチャグループによってキャプチャされた行の末尾に固定されている2つと一致します。
  • \1キャプチャされたグループのみが出力に残ります。

関連情報