【发布时间】:2018-06-06 18:48:23
【问题描述】:
我正在尝试重新格式化和压缩从国家气象局获得的天气预报,然后将其显示在我的小屏幕上。为此,我删除了不重要的换行符并将段落转换为一系列句子,压缩文本,然后重新格式化为显示所需的行长。
数据位于文件tested.in1.txt 和tested.in2.txt 中,为简单起见,我们可以对两者使用相同的数据。文件中没有非 ASCII 字符。我缩短了它以说明问题,通常它很长而且很冗长,这就是我需要压缩它的原因。
918 PM CST Sun Dec 24 2017~. TONIGHT...Cloudy with ~flurries. Lows 11 to 15. ~.CHRISTMAS DAY...Windy. Flurries and~light snow showers. Temperatures~nearly steady 12 to 16. ~.MONDAY NIGHT...Partly cloudy. Lows 1 below to 3 above zero. Wind~chills as low as 10 below zero. Northwest winds 10 to~15 mph. ~.TUESDAY...Mostly sunny. Wind chills as low~as 10 below to 20 below zero. ~.SATURDAY NIGHT...Mostly cloudy. A 30 percent chance of snow in~the evening. ~.SUNDAY...Mostly cloudy. Highs 15 to 19. ~$$~
他们将 ... 序列放在我想用 - 破折号替换的文本中。我不希望句点字符在我正在寻找重要换行符的下一部分代码中引起问题。这根本不起作用,并将整个文件转换为一系列破折号,除了文件末尾的 $~,而不仅仅是...连续三个句点的序列。
cat testsed.in1.txt | sed -e "s/\x2E\x2E\x2E/\x2D/g" > testsed.out1.txt
----------------------------------------------------------------------------------------------------------------------------------------------------------------------$~
其次,我需要找到重要的换行符应该在哪里是 \x7E\x2E 并将它们转换为 \x07\x2E 字符。这部分有效,但每次都会覆盖以下字符。我这样做的原因是因为我真的很想将所有后面没有 \x2E 的 \x7E 转换为空格,然后使用 tr 将 \x07 转换为 \x0A 换行符。
cat testsed.in2.txt | sed -e "s/\x7E\x2E/\x07\x2E/g" > testsed.out2.txt
918 PM CST Sun Dec 24 2017. TONIGHT...Cloudy with .lurries. Lows 11 to 15. .CHRISTMAS DAY...Windy. Flurries and.ight snow showers. Temperatures.early steady 12 to 16. .MONDAY NIGHT...Partly cloudy. Lows 1 below to 3 above zero. Wind.hills as low as 10 below zero. Northwest winds 10 to.5 mph. .TUESDAY...Mostly sunny. Wind chills as low.s 10 below to 20 below zero. .SATURDAY NIGHT...Mostly cloudy. A 30 percent chance of snow in.he evening. .SUNDAY...Mostly cloudy. Highs 15 to 19. .$~
这是我在这里的第一个问题,所以如果我犯了任何错误,我提前道歉。希望这里有人熟悉在 linux 下转换字符串并愿意向我展示如何使其工作。
【问题讨论】:
-
你告诉我们很多关于你想怎么做的事情,而关于你想做的事情还不够。 edit 你的问题包括给定输入的预期输出,这样我们就可以帮助你做你想做的事情,而不是实施,但是你认为你应该这样做。见xyproblem.info