コメントを自由に解釈すると、以下を含む可能性のある入力行があります。
value='www.visit-tunisia.com'>www.visit-tunisia.com
value='www.watania1.tn'>www.watania1.tn
value='www.watania2.tn'>www.watania2.tn
出力として行に繰り返される名前が必要です。
www.visit-tunisia.com
www.watania1.tn
www.watania2.tn
sed
これは、括弧を使用してキャプチャすることで実行できます。
sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p"
「-n
私が言わない限り、印刷しないでください」と書かれています。コマンドはs///p
、代替が機能するかどうかを出力します。このパターンは、「何か」 ( .*
) のストリーム、一重引用符、次の一重引用符 ( '\([^']*\)'
) までの内容をキャプチャし、その後に任意のテキスト、キャプチャされたテキスト (最初の\1
)、および何かを探します。置換テキストはキャプチャされたものです (2 番目の\1
)。
例:
$ cat data
www and wotnot
value='www.visit-tunisia.com'>www.visit-tunisia.com
blah
value='www.watania1.tn'>www.watania1.tn
hooplah
value='www.watania2.tn'>www.watania2.tn
if 'nothing' is required, nothing will be done.
$ sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p" data
www.visit-tunisia.com
www.watania1.tn
www.watania2.tn
nothing
$
[^']*
明らかに、必要に応じて一致の一部を絞り込むことができます。パターンは一重引用符で一致するため、式を二重引用符で囲みました。一重引用符と二重引用符の両方を許可する必要がある場合、人生はより複雑になります。その時点で、スクリプトをファイルに入れて実行sed -f script data
し、作業を楽にしていました。