sedを使用して、1行にn回繰り返されるパターンを繰り返し印刷します。

sedを使用して、1行にn回繰り返されるパターンを繰り返し印刷します。

cmdを使用してsedすべてのパターンを1行に印刷したいです。私はgrep -Peandを使ってこれを行う方法を知っていますawk。私は次のように始めました:

$ sed 's/^.*label="\(.*\)" selected.*$/\1/g' <(echo 'smkj sld/6_ !label="snd 1" selected>lms slks.;label="snd 2" selected>lkwnl  wlkmlabel="snd 3" selected>The following should not be printedlabel="')
snd 3

ただし、上記の内容は間snd 3の文字列のみを印刷します。最後label="そして発生" selected。すべての行に正規表現のすべての項目を含める方法は?

ベストアンサー1

これにより、GNU sed次のように目的の出力を生成できます。

$ sed -Ee '
     s/label="([^"]+)" selected[>]/\n\1\n/
     s/.*\n(.*\n)/\1/
     /\n/!d
     P;D
' input.txt

出力:

snd 1
snd 2
snd 3

Perlライナーでできます。

$ perl -lne 'print for /label="([^"]+)" selected[>]/g' input.txt

おすすめ記事