title="<text>"
たとえば、すべての変数をgrepし、LinuxのHTMLファイル内でtitle="best-pencil"
同じ行にコピーしたいと思います。alt="best-pencil"
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil">
に:
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">
を使用してこれを行うにはどうすればよいですかsed
?
答え1
文字列がi)常に二重引用符で囲まれていて、絶対に含まれていないこと、および"
ii)常に1行にしかないと確信できれば、これは簡単です。
$ sed -E 's/title=("[^"]*")/& alt=\1/' file
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">
秘密とは、次のtitle="
0以上のnon-を見つけてそれを「キャプチャ」し(周囲の括弧が実行するアクション)、記号は「一致する項目」を意味します。 、ここではそれ自体に置き換えて、その後に 。"
"
("[^"]*")
\1
sed
&
title="foo"
alt="foo"
sed
をサポートしていないバージョンがある場合は、次のものを代わり-E
に使用できます。
$ sed 's/title=\("[^"]*"\)/& alt=\1/' file
<p class="images"><img src="my-favorite-pencil.jpg" title="best-pencil" alt="best-pencil">