unix - 在 UNIX 中替换文件末尾的十六进制分隔符和额外字符
问题描述
我在 UNIX 文件的每一行末尾都有不可打印的分隔符 ( ^\
) 和 ( )。^^
我想用可打印的分隔符替换不可打印的分隔符,|
并删除每个文件末尾的字符。如何删除这些字符?
实际文件:
1^\MI^\IN^\123^\Y^^
预期输出:
1|MI|IN|123|Y
解决方案
我不清楚你的不可打印字符到底是什么,所以我假设你^
用来表示字符 0x1c 和^^
表示 0x1e。
你可以给八进制序列来tr
翻译任意字符,所以如果你想删除 0x1e 并将 0x1c 转换为|
,你可以这样做:
$ cat -v input
1^\MI^\IN^\123^\Y^^
$ xxd input
00000000: 311c 4d49 1c49 4e1c 3132 331c 591e 0a 1.MI.IN.123.Y..
$ < input tr -d '\036' | tr \\034 \| | cat -v
1|MI|IN|123|Y
推荐阅读
- scala - 是否可以在执行前优化 Free Monad 程序?
- c# - 如何将双精度列表细分为 n 个块,其中下一个系列的第一个元素是上一个系列的最后一个
- r - 过滤每个主题的多个事件之间的行
- java - 迭代二维数组后仅打印一次消息
- java - onRemoveClicked() 未在 Java Swing 中显示正确的项目移除价格
- javascript - JS 中的 iOS 明暗模式
- apache-kafka - 来自不同 Kafka 主题的事件数量的聚合(总和)
- flutter - 在 mobx 商店中创建 Firestore 监听器(颤振)
- javascript - window.location.href - 只需要在下面的行中获取 url 的最后一位(我不需要主机详细信息)
- active-directory - Windows hyperV 和推广 DC