gpt4 book ai didi

linux - 如何使用 sed 在现有文件的开头添加 UTF-16 字符?

转载 作者:太空狗 更新时间:2023-10-29 12:23:43 25 4
gpt4 key购买 nike

我有一个生成许多文件的大型脚本,由于缺少 BOM,其中一部分无法运行。我必须使用名为 pagecounts-${_date} 的文件,它最终是这样创建的:

cat $TMPDIR/*.filtered > $TMPDIR/pagecounts-${_date}

然后,我使用排序并尝试在另一个脚本中使用它,但我收到 BOM 错误。我的问题是,我可以在现有文件的开头添加 utf-16 的 BOM 吗?如果是,我该如何实现?

我正在考虑使用这样的临时文件:

cat $TMPDIR/*.filtered > $TMPDIR/tmp_pagecounts-${_date}
echo '\ufeff' > $TMPDIR/pagecounts-${_date}
cat $TMPDIR/tmp_pagecounts-${_date} | sort >> $TMPDIR/pagecounts-${_date}

但这种方式似乎切断了一些UTF-16字符。

最佳答案

您可以使用 echo -e 按原样打印 Unicode utf-16 字符序列

sed "1s/^/$(echo -ne '\ufeff')/" "$TMPDIR"/pagecounts-${_date}

或者也使用printf

sed "1s/^/$(printf '\ufeff')/" "$TMPDIR"/pagecounts-${_date}

在同一文件上执行hexdump -chexdump -C 后,确认相同的序列是准确的

echo -ne '\ufeff' | hexdump -c
0000000 355 237 277 355 273 277
0000006

您也可以确认这些字节在应用到文件时是一致的。

上面的 sed 命令只是将文件内容打印到标准输出,要就地修改文件,请使用 -i 标志(-i '' 是 macOS 的 sed 所必需的)

sed -i '' ...

关于linux - 如何使用 sed 在现有文件的开头添加 UTF-16 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49346675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com