[英]hex search and replace characters with sed linux
我正在尝试重新格式化和压缩从国家气象局获得的天气预报,然后将其显示在我的conky屏幕的一部分上。 为此,我删除了不重要的换行符,将段落变成一系列句子,压缩文本,然后重新格式化为显示所需的行长。
数据位于文件testsed.in1.txt和testsed.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下转换字符串,并愿意向我展示如何使其工作。
\\x2E\\x2E\\x2E
与...
相同,它将匹配任何三个连续的字符(在解析正则表达式之前执行从十六进制表示法的转换)。 由于testsed.in1.txt
的示例文本testsed.in1.txt
为500个字符,请使用sed
将其转换为166个破折号,并保持2个字符不变(500 = 166 * 3 + 2)。
我会用类似的东西
sed -e "s/\.\.\./-/g" testsed.in1.txt > testsed.out1.txt
也许
sed -e "s/[.]\{3\}/-/g" testsed.in1.txt > testsed.out1.txt
问题的第二部分也遇到了\\x2E
的相同问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.