如何找到固定宽度文件的两个连续行之间的差异和差异点?
样本文件:
cat test.txt
1111111111111111122211111111111111
1111111111111111132211111111111111
输出 :
它应该通知用户两行之间存在差异,并且差异的位置在第18个字符处(如上例所示)
如果可以列出所有变化的情况下的所有位置,那将非常有帮助,例如:
11111111111111111211113111
11111111111111111211114111
这里应该说:区别在第18和26个字符。
我尝试按照以下方式进行操作,但似乎迷路了。
while read line
do
echo $line |sed 's/./ &/g' |xargs -n1 #NOt able to apply diff (stupid try)
done <test.txt
您可以使用空字段分隔符使每个字符成为字段,awk
并比较每个偶数记录和奇数记录的条目:
awk 'BEGIN{ FS="" } NR%2 {
split($0, a)
next
}
{
print "line # ", NR
for (i=1; i<=NF; i++)
if ($i != a[i])
print "difference spotted in position:", i
}' test.txt
line # 2
difference spotted in position: 18
line # 4
difference spotted in position: 18
difference spotted in position: 23
输入数据为:
cat test.txt
1111111111111111122211111111111111
1111111111111111132211111111111111
11111111111111111211113111
11111111111111111311114111
PS:仅适用于awk
将记录为FS
null时将记录拆分为char的版本,例如GNU awk,OSX awk等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句