十六进制搜索并用sed-linux替换字符

十六进制搜索并用sed-linux替换字符,linux,string,sed,replace,Linux,String,Sed,Replace,我正试图重新格式化和压缩从国家气象局得到的天气预报,然后将其显示在我的康基屏幕的一部分。为此,我删除了不重要的换行符,将段落转换成一系列句子,压缩文本,然后重新格式化为显示所需的行长 数据位于testsed.in1.txt和testsed.in2.txt文件中,为了简单起见,我们可以对这两个文件使用相同的数据。文件中没有非ascii字符。我缩短了它来说明问题,通常它很长而且冗长,这就是为什么我需要压缩它 918 PM CST Sun Dec 24 2017~. TONIGHT...Cloudy

我正试图重新格式化和压缩从国家气象局得到的天气预报,然后将其显示在我的康基屏幕的一部分。为此,我删除了不重要的换行符,将段落转换成一系列句子,压缩文本,然后重新格式化为显示所需的行长

数据位于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
与将匹配任意三个连续字符的
..
相同(在解析regexp之前执行十六进制符号转换)。由于
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

有同样的问题,你告诉了我们很多关于你想做什么的事情,但对于你想做什么却不够。您的问题是,在给定输入的情况下,要包含预期输出,以便我们可以帮助您做您想做的事情,而不是按照您认为应该做的方式实施。看到了吗,这正是我要去的地方。我不知道那段时间。我对最后的美元也有同样的问题。甚至\$都不匹配。但是你给的解决方案解决了问题,谢谢:)@BobC太好了!请考虑接受回答和/或投票。是的,我确实“赞成”了你的答案,因为它确实起作用并回答了我的问题,但我看不到接受“它”的选择。它说我没有15个职位,因此我的投票不包括在内。我确实有一个按钮来回答我自己的问题,但你的回答起作用了。