![如何在 Bash 中去掉某些十六进制字符?](https://linux22.com/image/175752/%E5%A6%82%E4%BD%95%E5%9C%A8%20Bash%20%E4%B8%AD%E5%8E%BB%E6%8E%89%E6%9F%90%E4%BA%9B%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
我收集了一个单词列表供人们在推特上关注。然而,有一个问题。当我 cat 并执行 xxd 时,会发现额外的隐藏字符。即 1b5b 6d1b 5b4b 。我需要去掉这些角色。可以说 007_sharky 是名字,当我发现它时我得到了
00000000: 3030 375f 7368 6172 6b79 1b5b 6d1b 5b4b 007_sharky.[m.[K 00000010: 0a
但我需要得到
00000000: 3030 375f 7368 6172 6b79 0a 007_sharky.
它不仅仅适用于多行的一行,所以我可以这样做
cat file | while read line; do
something
done
我错过了某些部分,我怎样才能删除这些字符。另外,在使用 cut awk 和 grep 格式化后,我再次错误地删除了文件,我得到了这个。另外,第一张图片是新的,第二张图片是旧的。
https://gist.github.com/machinexa2/293823309ad804866b32b59eda17526d
答案1
看起来每行开头正好有 6 个额外字节。所以你可以使用这个:
cut -b 7- temp > result