我制作了一個小 bash 腳本,它從網站獲取當前氣壓并將其寫入變數。在氣壓之后,我想添加當前日期并將所有內容寫入文本檔案。目標應該是一種 CSV 檔案。
我的問題。我總是在氣壓和日期之間換行。嘗試通過 sed 或 tr '\n' 洗掉換行符失敗。
我的第二個猜測: wget 完成“太晚了”并且 echo 已經完成。
所以我在所有命令之間用 && 嘗試了它。結果相同。
作業系統是Linux。我的思維錯誤在哪里?
我現在不能再進一步了。提前致謝。
斯文
PS.:這是我第一次嘗試使用 sed。這當然可以寫得更好;)
#!/bin/bash
luftdruck=$(wget 'https://www.fg-wetter.de/aktuelle-messwerte/' -O aktuell.html && cat aktuell.html | grep -A 0 hPa | sed -e 's/<[^>]*>//g' | sed -e '/^-/d' | sed -e '/title/d' | sed -e 's/ hPa//g')
datum=$(date)
echo -e "${luftdruck} ${datum}" >> ausgabe.txt
uj5u.com熱心網友回復:
替換為sed -e 's/ hPa//g')用sed -e 's/ hPa//g' | dos2unix)換行符 (Unix/Linux) 替換尾隨回車符 (DOS/Windows)。
uj5u.com熱心網友回復:
您下載的 html 檔案使用 Windows 換行符(回車\r 換行\n)。我假設您的 bash 腳本僅洗掉\ns,但您用于查看檔案的編輯器將 s 顯示\r為換行符。
因此,您可以通過管道tr -d \\r\\n將所有內容洗掉所有換行符。
但是有一個更好的選擇:只提取重要部分而不是整行。
luftdruck=$(
wget 'https://www.fg-wetter.de/aktuelle-messwerte/' -O - |
grep -o '[^>]*hPa' | tr -dc 0-9.
)
echo "$luftdruck $(date)" >> ausgabe.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/520117.html
