我想逐行比较两个文件,并检查第一个文件中的左/上坐标是否与第二个文件中的相同。
我在 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
我不知道该怎么办... 请帮助我!
最佳答案
假设您有两个具有 left
/top
坐标的文件,每行一对,left
值始终位于 top
之前code> 值,中间可能有“噪音”行,那么最简单的解决方案是首先过滤掉这些值(例如使用 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
关于shell - 如何逐行比较两个文件,但仅比较选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974839/