我正在阅读一个很长的日志文件,并使用bash在变量中拆分列。
cd $LOGDIR
IFS=","
while read LogTIME name md5
do
LogTime+="$(echo $LogTIME)"
Name+="$(echo $name)"
LOGDatamd5+="$(echo $md5)"
done < LOG.txt
但这真的很慢,我不需要所有的线路。最后100行就足够了(但是日志文件本身需要不同程序的所有其他行)。
我尝试使用tail -n 10 LOG.txt | while read LogTIME name md5
,但这也需要很长时间,而且根本没有输出。
我测试的另一种方法是没有成功:
cd $LOGDIR
foo="$(tail -n 10 LOG.txt)"
IFS=","
while read LogTIME name md5
do
LogTime+="$(echo $LogTIME)"
Name+="$(echo $name)"
LOGDatamd5+="$(echo $md5)"
done < "$foo"
但是这只给了我foo的输出。没有任何内容写入while循环中的变量。
这可能是一种非常简单的方法,我看不到......
干杯, BallerNacken
答案 0 :(得分:2)
流程替换是常见的模式:
while read LogTIME name md5 ; do
LogTime+=$LogTIME
Name+=$name
LogDatamd5+=$md5
done < <(tail -n100 LOG.txt)
请注意,您不需要"$(echo $var)"
,您可以直接指定$var
。