我有一个生成许多文件的大脚本,由于缺少BOM,部分文件无效。我必须处理名为pagecounts的文件 - $ {_ date},最终创建如下:
foreach($pages as $page_number => $items){
/* Your code */
}
然后,我使用sort并尝试在另一个脚本中使用它,但是我得到了BOM错误。我的猜测是,我可以在现有文件的开头添加utf-16的BOM吗?如果是,我该如何实现?
我在考虑使用这样的临时文件:
cat $TMPDIR/*.filtered > $TMPDIR/pagecounts-${_date}
但是这种方式似乎会削弱一些UTF-16字符。
答案 0 :(得分:1)
您可以使用echo -e
按原样打印Unicode utf-16
字符序列
sed "1s/^/$(echo -ne '\ufeff')/" "$TMPDIR"/pagecounts-${_date}
或使用printf
sed "1s/^/$(printf '\ufeff')/" "$TMPDIR"/pagecounts-${_date}
在同一档案上执行hexdump -c
或hexdump -C
后确认相同的序列是准确的
echo -ne '\ufeff' | hexdump -c
0000000 355 237 277 355 273 277
0000006
您也可以确认这些字节在应用于文件时保持一致。
以上sed
命令只是将文件内容打印到stdout,要使用-i
标记就地修改文件(mac -i ''
需要sed
{{ 1}})
sed -i '' ...