我想逐行比较两个文件,并检查第一个文件中的左/顶部坐标是否在第二个文件中相同。
我在UNIX Shell中遇到有关此命令的问题:
awk -F"px" '{print $1}'
总结一下,我想比较两个Html文档中的px:
输入:
第一个:
<div class="txt" style="position:absolute; left:76px; top:26px;">
第二个:
<div class="txt" style="position:absolute; left:61px; top:28px;">
过程:
i=1
left=1
top=2
while [ "$linesBodyPdf1" > "$i" ]
do
echo "------Line $i--------"
px1=`echo "left V1=" && echo $bodyPdf1 | awk -F"px" '{print $left}' | awk -F"left:" '{print $2}'`
echo $px1
px2=`echo "top V1=" && echo $bodyPdf1 | awk -F"px" '{print $top}' | cut -c7-9`
echo $px2
px1=`echo "left V2=" && echo $bodyPdf2 | awk -F"px" '{print $left}' | awk -F"left:" '{print $2}'`
echo $px1
px2=`echo "top V2=" && echo $bodyPdf2 | awk -F"px" '{print $top}' | cut -c7-9`
echo $px2
left=$(($left + 2))
top=$(($top + 2))
i=$(($i + 1))
done
输出:
------Line 1--------
left V1= 0px; top:0px;" width="595" height="841" src="page1.png"> <div class="txt" style="position:absolute;
top V1= <i
left V2= 0px; top:0px;" width="595" height="841" src="page1.png"> <div class="txt" style="position:absolute;
top V2= <i
而不是:
------Line 1--------
left V1= 76
top V1= 26
left V2= 61
top V2= 28
我不知道怎么办...... 请帮帮我!
答案 0 :(得分:2)
假设您有两个left
/ top
坐标的文件,每行一对,left
值前top
值,可能&#34;噪音&# 34;两者之间的行,那么最简单的解决方案是首先过滤掉值(例如用sed
),然后逐行比较(例如用awk
):
#!/bin/bash
# Usage: compare.sh FILE1 FILE2
filter() {
sed -nE 's/.*left\s*:\s*([0-9]+)\s*px.*top\s*:\s*([0-9]+)\s*px.*/\1 \2/gp'
}
awk 'NR==FNR { x[NR]=$0 }
NR>FNR { print "Line " FNR ": " x[FNR] (x[FNR]==$0 ? " == ":" != ") $0 }'
<(filter <"$1") <(filter <"$2")
使用first.html
和second.html
输入,输出如下:
$ cat first.html
<div class="txt" style="position:absolute; left:76px; top:26px;">
<span>
<div class="txt" style="position:absolute; left:74px; top:25px;">
$ cat second.html
<div class="txt" style="position:absolute; left:61px; top:28px;">
<div class="txt" style="position:absolute; left:74 px; top: 25px;">
<div class="txt" style="position:absolute; left:61px; top:28px;">
$ ./compare.sh first.html second.html
Line 1: 76 26 != 61 28
Line 2: 74 25 == 74 25
Line 3: != 61 28
答案 1 :(得分:0)
呀!我已经解决了我的问题。
我写了这样的话:'{print $left}'
而不是:
'{print $'"${left}"'}'
我可以通过执行以下操作来增加我的变量:
left=$(($left + 2))
这就写了
'{print $2}'
'{print $4}'
'{print $6}'
'{print $8}'
'{print $10}'
...
这就是我想要的
感谢所有人的帮助。
干杯!!!!!