2016-11-01 6 views
0

私は2つのファイルに以下のデータていますGrep出力をSedに配管することによって可変パターンを先頭に付ける方法

domains.txtは含まれています

http://example1.com 

urls.txtは含まれています

http://example1.com/url-example/ 
http://example5.com/url-example/ 
http://example2.com/url-example/ 

次のコマンドを(通常はありますので、私は、この構造を使用しています使用しますファイル内にもっと多くのものがありますが、これは最小限の例です):

cat domains.txt | while read LINE; do grep -m 1 "$LINE" urls.txt 

これは私に一致する行を与えるでしょう。私はマッチし出力する前"LINE"変数を付加しますパイプを追加したいと思い

http://example1.com,http://example1.com/url-example/ 

http://example1.com/url-example/ 

しかし、私は、所望の出力はようにしたいと思います。私はsedで何かが容易でなければならないと考えていたのですか?あなたのご意見は高く評価されます。

更新:

これはawkと簡単ですが、誰かが出力をパイプとの答えを持っている場合、私はスクリプトを使用して行くためにそれを使用したいと思います。

答えて

2
while IFS= read -r line; do echo -n "$line,"; grep -m 1 "$line" urls.txt; done < domains.txt 
+0

ああ、私はそれがこのような単純なものだと分かっていました。ありがとう@サイラス。 – DomainsFeatured

1

これはawkを使用して行うことは非常に簡単です:

while read LINE; do awk -v pattern="$LINE" '$0 ~ pattern { print pattern "," $0 }' urls.txt; done < domains.txt 

または使用のsed:

while read LINE; do sed -ne "s?$LINE.*?$LINE,&?p" urls.txt; done < domains.txt 

のawkを使用して最初の試合に結果を制限するために、あなたのフォローアップの質問に答えるために:

while read LINE; do awk -v pattern="$LINE" '$0 ~ pattern { print pattern "," $0; exit }' urls.txt; done < domains.txt 
+0

ねえヤーノシュが、これはQUESではありません結果は最初の試合に限定できますか? – DomainsFeatured

+3

コメントしますか? – janos

+0

ちょうど明らかである...それは私ではなかった。ジャノスに感謝します。 – DomainsFeatured

関連する問題