我制作了一个小型bash脚本,该脚本从网站获取当前气压并将其写入变量。气压过后,我想添加当前日期,并将所有内容写入文本文件。目标应该是一种CSV文件。
我的问题。我总是在气压和约会之间找到一条线。尝试删除sed或tr'\n'的换行符失败。
我的第二个猜测是:wget完成了"太迟了";并且回声已经完成。
所以我用&;在所有命令之间。同样的结果。
操作系统是Linux。我的思维错误在哪里?
我现在不能再往前走了。提前谢谢。
Sven
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
将sed -e 's/ hPa//g')
替换为sed -e 's/ hPa//g' | dos2unix)
,将尾部回车(DOS/Windows(替换为换行(Unix/Linux(。
您下载的html文件使用Windows行尾(回车r
+换行n
(。我假设您的bash脚本只删除了n
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