csv Bash脚本生成换行符-为什么?

nszi6y05  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(156)

我做了一个小的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
g52tjvyc

g52tjvyc1#

sed -e 's/ hPa//g')替换为sed -e 's/ hPa//g' | dos2unix)可将尾部回车(DOS/Windows)替换为换行符(Unix/Linux)。

tjjdgumg

tjjdgumg2#

您下载的html文件使用了Windows行尾(回车符\r +换行符\n)。我假设您的bash脚本只删除了\n,但您用来查看文件的编辑器将\r显示为换行符。
因此,您可以将所有内容通过tr -d \\r\\n进行管道传输,这将删除 all 换行符。
但还有一个更好的选择:只提取重要部分而不是整行。

luftdruck=$(
    wget 'https://www.fg-wetter.de/aktuelle-messwerte/' -O - |
    grep -o '[^>]*hPa' | tr -dc 0-9.
)
echo "$luftdruck $(date)" >> ausgabe.txt

相关问题