为了检索文件第 13 列的所有租船人的 ascii 代码,我编写了这个脚本
awk -v ch="'" '{
for (i=1;i<=length(substr($13,6,length($13)));i++)
{cmd = printf \"%d\\n\" \"" ch substr(substr($13,6,length($13)),i,1) "\"" cmd | getline output close(cmd) ;
Number= Number " " output
}
print Number ; Number=""
}' ~/a.test
但它不能以正确的方式工作!我的意思是它可以正常工作一段时间然后产生奇怪的结果!?例如,对于这个输入(假设它是第 13 列)
CQ:Z:%8%%%%0%%%%9%%%%:%%%%%%%%%%%%%%%%%
我必须得到这个
37 56 37 37 37 37 48 37 37 37 37 57 37 37 37 37 58 37 37 37 37 ......
但我有这个
37 56 37 37 37 37 48 48 48 48 48 57 57 57 57 57 58 58 58 58 58 ......
如您所见,第一个错误计算出现在字符“0”之后(结果为 48)。
你知道我的代码的哪一部分是造成这个错误的原因吗?!