以下のようなファイルがあります。
<a href="http://firstlink.com" title="title1">
<a href="http://secondlink.com" title="title2">
<a href="http://thirdlink.com" title="title3">
<a href="http://fourthlink.com" title="title4">
上記のファイルからURLのみを抽出しようとしています。以下のコマンドを使用しています。
grep -o '\".*\"' new.txt
ただし、上記のコマンドでは、次のような出力が得られます。
"http://firstlink.com" title="title1">
"http://secondlink.com" title="title2">
"http://thirdlink.com" title="title3">
"http://foruthlink.com" title="title4">
""
なしでURLのみを抽出しようとしています。だから、私の期待される出力は、
http://firstlink.com
http://secondlink.com
http://thirdlink.com
http://fourthlink.com
Grepコマンドを変更するにはどうすればよいですか?または、Perl、awk、sedコマンドでそれを行うことは可能ですか?
awk
を使用できます。
awk -F\" '{print $2}' filename
望ましい出力を生成します。
sed
の使用:
sed 's/[^"]*"\([^"]*\).*/\1/' filename
grep
の使用:
grep -oP '[^"]*"\K[^"]*' filename
正規表現、ストリームエディター、インタープリターはここでは過剰です。
古き良きものを使うcut:
cut -d \" -f 2 < filename
他の回答のいくつかは最初の要素であるhrefに依存するため、これはより移植性があります
grep -o href.*\" file.txt | cut -d \" -f 2
sed 's/.*"\(http.*\)" .*/\1/' filename