如何将tail -f的输出通过管道传输到iconv命令?

5

我有一个使用GBK编码的日志文件,我需要像这样读取数据:

tail -n 2000 nohup.out | iconv -f gbk -t utf-8

但是当我使用 tail -f 命令时,它不会打印任何内容:

tail -f nohup.out | iconv -f gbk -t utf-8
1个回答

8

在类似的情况下,我使用一个脚本来读取每一行并进行转换。对于你的情况:

tail -f nohup.out | iconv.sh

这个命令可以实现相同的功能。

#!/bin/bash
#iconv.sh
IFS=''
while read line
do 
    echo "$line" | iconv -f gbk -t utf-8
done  < "${1:-/dev/stdin}"

这对于跟踪由WSL Linux中的Windows 10 PowerShell脚本生成的UTF-16日志非常有效。 - Lee Joramo
一次缓冲更多行更好:https://stackoverflow.com/questions/8314499/read-n-lines-at-a-time-using-bash - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接