簡體   English   中英

使用SED,AWK或GREP匹配文件中的URL模式

[英]Match URL pattern within file using SED, AWK or GREP

我正在嘗試使用grep提取以http開始並以jpg結尾的網址列表。

grep -o'picturesite.com/wp-content/uploads / .......'文件名

上面的代碼是我已經走了多遠。 然后,我需要傳遞這些文件名來卷曲

標題:“家庭度假”,jpg:“ http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg ”,所有者:“ PhotoTaker”

您可以通過執行以下操作捕獲url模式:

grep -o 'http.*.jpg' file

$ grep -o 'http.*.jpg' <<EOF
> title : "Family Vacation", jpg:"http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg", owner : "PhotoTaker
> EOF 
http://picturesite.com/wp-content/uploads/2014/01/mypicture.jpg

curl不從標准輸入中獲取url ,因此最好的選擇是將提取的url存儲到文件中,然后一次讀取一行文件,然后將包含該行的變量傳遞給curl命令。

sed -nr 's/http\S*(jpg\|gif\|other\|ext)/\
    curl $CURLOPTS & >$OUT/p' <$infile | sh -n

上面的命令將在$ infile中搜索任何以“ http”開頭,其后為任意長度的非空格字符,並以“ \\ |”結尾的字符串 括號中包含分隔的文件擴展名。

一旦找到,這樣的字符串sed會將其替換到第二行的curl命令行中,以替換“&”。 然后它將命令字符串傳遞給sh以便執行。

請記住,sed是流編輯器,而不僅僅是流搜索器,因此它可以非常有能力地預處理其他命令的輸入,以使它們執行您想要的操作。

注意:sh當前被傳遞了'noexecute'參數,該參數基本上比echo更為有效。 運行幾次后,如果您對它感到滿意,那么您在做正確的事情就需要刪除它才能產生任何效果。

注意2:如果有可能您希望每行匹配多個網址,則需要使用'g'sed選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM