我做了一个小的bash脚本,它从一个网站获取当前的气压,并将其写入一个变量。在气压之后,我想添加当前日期,并将所有内容写入一个文本文件。目标应该是一种CSV文件。
我的问题。我总是在气压和日期之间得到一个换行符。尝试通过sed或tr '\n'删除换行符失败。
我的第二个猜测:wget完成“太晚”,echo已经完成。
所以我试着在所有命令之间加上&&。同样的结果。
操作系统是Linux,我的思维错误在哪里?
我现在不能再多说了。先谢谢你了。
斯文
附言:这是我第一次尝试使用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
2条答案
按热度按时间g52tjvyc1#
将
sed -e 's/ hPa//g')
替换为sed -e 's/ hPa//g' | dos2unix)
可将尾部回车(DOS/Windows)替换为换行符(Unix/Linux)。tjjdgumg2#
您下载的html文件使用了Windows行尾(回车符
\r
+换行符\n
)。我假设您的bash脚本只删除了\n
,但您用来查看文件的编辑器将\r
显示为换行符。因此,您可以将所有内容通过
tr -d \\r\\n
进行管道传输,这将删除 all 换行符。但还有一个更好的选择:只提取重要部分而不是整行。