これはトリッキーです。入力は複数行にわたって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"
答え2
他の方法:
sed ' s/d-fl ai-c" /\n/g; s/-/"\n/g; :L; /^id=/ P; D; bL; ' file
id="3af3a73f26a63a"
id="7ab8273f273e7273f82c2"
id="973a72b72c72df12a2"
id="83hd826ab712cc71"
id="7612364bab72a"