在 Linux shell 變數中獲取網頁內容
簡介
Linux 命令列最有用和強大的功能之一是能夠操作文字。當處理網頁時,這尤其有用,因為網頁內容通常可以儲存為純文字,然後使用命令列工具進行操作。在本文中,我們將探討如何在 Linux 中將網頁內容插入到 shell 變數中。
什麼是 shell 變數?
shell 變數是儲存在記憶體中的值,可以被 shell(命令列介面)和其他程式使用。shell 變數通常以 **NAME=value** 的形式定義,其中“NAME”是變數的名稱,“value”是儲存在變數中的值。
shell 變數可以用來儲存各種資訊,包括命令列工具的輸出、文字檔案的內容,甚至網頁的內容。
使用 curl 獲取網頁內容
將網頁內容放入 shell 變數的最簡單方法之一是使用 **“curl”** 命令。**Curl** 是一個用於向伺服器傳輸或從伺服器傳輸資料的命令列工具。它支援各種協議,包括 HTTP、HTTPS、FTP 等等。
要使用 **curl** 將網頁內容放入 shell 變數,可以使用以下命令:
$ webcontent=$(curl -s https://www.example.com)
此命令將 https://www.example.com 上的網頁內容儲存在 shell 變數“webcontent”中。“-s”標誌指示 curl 以靜默模式執行,這意味著它不會向終端列印任何輸出。
使用 grep 從網頁中提取特定行
將網頁內容放入 shell 變數後,可以使用 **grep** 等命令列工具從網頁中提取特定的文字行。grep 是一個功能強大的命令列工具,用於在文字中搜索模式。
例如,假設我們想要 **從網頁中提取所有連結**。我們可以使用以下命令來執行此操作:
$ links=$(echo "$webcontent" | grep -o 'href="[^"]*"')
此命令將使用 grep 在網頁內容中查詢模式 **'href="[^"]*"'** 的所有出現,該模式匹配頁面上的所有連結。“-o”標誌告訴 grep 只打印文字的相應部分,在本例中是連結本身。此命令的輸出將是網頁上所有連結的列表,每行一個連結。
使用 awk 從網頁中提取特定欄位
另一個用於從文字中提取特定資訊的實用命令列工具是 **“awk”**。**Awk** 是一種專為文字處理而設計的程式語言,通常用於從文字檔案中提取特定欄位。
例如,假設我們想要提取網頁的標題。網頁標題通常儲存在 HTML 原始碼的 **"title"** 元素中,如下所示:
<title>Example Web Page</title>
要使用 **awk** 提取網頁標題,可以使用以下命令:
$ title=$(echo "$webcontent" | awk '// {print $0}' | sed 's/<[^>]*>//g')
此命令將搜尋模板。
使用 cut 從網頁中提取特定欄位
另一個用於從文字中提取特定欄位的實用命令列工具是 **“cut”**。**Cut** 是一個用於從檔案或命令輸出中提取特定欄位的命令列工具。
例如,假設您想從以下格式的姓名列表中提取名字和姓氏:“first last”。我們可以使用以下命令來執行此操作:
$ names="John Smith Jane Doe" $ first_names=$(echo "$names" | cut -d' ' -f1) $ last_names=$(echo "$names" | cut -d' ' -f2) $ echo "$first_names" # Output: John Jane $ echo "$last_names" # Output: Smith Doe
此命令使用 **“-d”** 標誌指定分隔符(在本例中為空格)和 **“-f”** 標誌指定要提取的欄位號。該命令的輸出是名字和姓氏的列表,由分隔符分隔。
結論
在本文中,我們探討了如何在 Linux 上將網頁內容放入 shell 變數中,以及如何使用 **curl、grep、awk** 和 **cut** 等命令列工具從網頁中提取特定資訊。這些工具功能強大,在命令列上處理網頁時可以為您節省大量時間和精力。