文字列の同じ行にある2つの区切り記号の間で複数の一致を抽出します。

文字列の同じ行にある2つの区切り記号の間で複数の一致を抽出します。

これはトリッキーです。入力は複数行にわたって1行に複数回表示されます。 "id=" 行が多いが ai-c "id=" で始まる行だけが必要です。

入力例(長い2行):

d-fl ai-c" id="3af3a73f26a63a-list-" lima zulu bravo hotel d-fl ai-c" id="7ab8273f273e7273f82c2-list-" alpha id="8372364fa2361ab1-list-" hotel foxtrox mike d-fl ai-c" id="973a72b72c72df12a2-list-" uniform hotel

11月2選ゴルフスタート d-fl ai-c" id="83hd826ab712cc71-list-" bravo mike mike d-fl ai-c" id="7612364bab72a-list-" ゴルフマイク

希望の出力は次のとおりです。

id="3af3a73f26a63a"

id="7ab8273f273e7273f82c2"

id="973a72b72c72df12a2"

id="83hd826ab712cc71"

id="7612364bab72a"

私が見たすべてのスクリプト例は、1行の最初の項目でのみ機能するようです。

ベストアンサー1

1つの方法は次のとおりです。

grep -oP '\hai-c"\h\Kid="[^-]*'  input.file | sed -e 's/$/"/'

GNU grep一致するものが見つかった場合は、行全体を出力するデフォルトではなく、一致するもののみを出力するオプションと機能を使用します。Perl-o

出力:

id="3af3a73f26a63a"
id="7ab8273f273e7273f82c2"
id="973a72b72c72df12a2"
id="83hd826ab712cc71"
id="7612364bab72a"

おすすめ記事