我面临一个非常奇怪的问题。我有2个文件ber_log_before.txt和ber_log_after.txt。他们的内容是
ber_log_before.txt
$
BOAR 0 BER:14
BOAR 1 BER:19
BOAR 2 BER:0
BOAR 3 BER:0
BOAR 4 BER:0
BOAR 5 BER:0
BOAR 6 BER:0
BOAR 7 BER:0
$
ber_log_after.txt
$
BOAR 0 BER:24
BOAR 1 BER:29
BOAR 2 BER:0
BOAR 3 BER:0
BOAR 4 BER:0
BOAR 5 BER:0
BOAR 6 BER:0
BOAR 7 BER:0
$
$
它是正常的。
然后我写了一个基本的bash命令来解析它们
PORT="0 1"
for port in $PORT; do
VAL1=$(grep "BOAR $port" ber_log_before.txt | cut -f2 -d':')
VAL2=$(grep "BOAR $port" ber_log_after.txt | cut -f2 -d':')
echo 1st val ${VAL1} 2em val ${VAL2}
done
为什么1st val 14 2em val 24
没有回显???
如果我更换
echo 1st val ${VAL1} 2em val ${VAL2}
通过
echo 1st val ${VAL1}
echo 2em val ${VAL2}
然后至少我有2em val回应。
我想awk可以胜任这项工作,但这不是问题。
答案 0 :(得分:0)
这实际上不是问题,或者是我的问题。我提到的两个文件都是从telnet会话创建的(expect命令更具体)。因此,所有行都以\ r结尾,当然echo 1st val 14\r 2em val 24\r
将覆盖'回声的第一部分。所以我将\ r替换为\ n,然后就可以了。
要理解这个问题,我将命令复制到脚本中并使用set -x
。很容易找到\ r。
抱歉这个愚蠢的问题。