我正在使用tail
函数来读取接近460个日志文件,这些日志文件会同时附加所有文件。我试图读取的数据是字节分隔的固定宽度。请在下面找到我使用的命令:
find ###Directory### -mmin -2 -type f -name FileNameString*.log | xargs tail -qf -n -1
日志文件的预期格式如下:
KS0A2018020723594007G58P5CNSSHAGPRGGWS G NH 0962201803061535PEK HND C 999 9 9CC91 990C 900 99
KS0A2018020723594007G58P5CNSSHAGPRGGWS G NH 5702201803060910PEK NRT C 444 0 4 0 40 00 44
但我在输出中看到的格式如下:
KS0A2018020723594912V1KY7USSCNTNPRAAPI P AA 3735201802111632IAH OR3903G7YI0HKSQUNAPRAAPI P AA 1583201812241935DEN DFW P 7 7 777777777 7 7 7 7
KS0A2018020723593952G56SCKRSGKORPRGFLCNG AZ 0758201809301515FCO ICN P07100007017070010 00 7007
tail
函数正在扭曲文件的读取方式。
使用tail或任何等效命令正确读取格式的任何指导都将有很大帮助。
答案 0 :(得分:1)
-z
需要tail
选项。
$ find /path/to/ -mmin -2 -type f -name FileNameString*.log | xargs tail -qf -z -n -1
-z, --zero-terminated line delimiter is NUL, not newline
最好使用-exec
find
$ find /path/to/ -mmin -2 -type f -name "FileNameString*.log" -exec tail -qf -z -n -1 {} \+
答案 1 :(得分:0)
如果我们在没有为Xargs分配参数的情况下执行Xargs,则输出中将始终存在失真(因为它往往会扭曲线形成)。 所以,
find ###Directory### -mmin -2 -type f -name FileNameString*.log | xargs tail -qf -n -1
总是会导致输出失真,因为没有可控制的方式来读入或写入输出。
但是,如果我们可以使用-I以受控方式将输入变量传递给Xargs,那么它运行良好。就我而言,
find ###Directory### -mmin -2 -type f -name FileNameString*.log | xargs -I% tail % -qf -n -1
生成了我期望的输出格式。但是,如果要传递给Xargs的变量列表很长,这可能是执行速度较慢的一个。