我有一些聯邦pdf格式的填充數據init。可以說,例如i765,我有這種形式的數據可用文本格式,適當填寫的細節。我怎樣才能從這個表格中提取數據並進行最少的解析。讓我們說如何寫一個腳本來標識「差異」,這本身就是充滿信息。從靜態表單中提取填充數據的最佳方式是什麼?
對於例如:如果一個行包含..
SSN:(空白)和實際填寫表單有SSN:ABC @#456
所以填寫的信息是什麼,但ABC! @#456這只是字符串之間的區別。有沒有一種我可以遵循的已知方法。任何指針都非常感謝。
我有一些聯邦pdf格式的填充數據init。可以說,例如i765,我有這種形式的數據可用文本格式,適當填寫的細節。我怎樣才能從這個表格中提取數據並進行最少的解析。讓我們說如何寫一個腳本來標識「差異」,這本身就是充滿信息。從靜態表單中提取填充數據的最佳方式是什麼?
對於例如:如果一個行包含..
SSN:(空白)和實際填寫表單有SSN:ABC @#456
所以填寫的信息是什麼,但ABC! @#456這只是字符串之間的區別。有沒有一種我可以遵循的已知方法。任何指針都非常感謝。
如果我們談論的是Linux的工具,那麼你可以嘗試各種解決方案,如:
$ join -t"=" -a1 -o 0,2.2 <(sort emptyform) <(sort filledform) # "=" is used as delimiter
甚至awk中沒有排序的要求:
$ awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\n Missing fields:";for (i in a) print i,a[i]}' empty filled
測試:
cat <<EOF >empty
Name=""
Surname=""
Age=""
Address=""
Kids=""
Married=""
EOF
cat <<EOF >filled
Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"
EOF
join -t"=" -a1 -o 0,2.2 <(sort empty) <(sort filled)
#Output:
Address="Europe"
Age="42"
Kids=
Married=
Name="George"
Surname="Vasiliou"
awk輸出
awk 'BEGIN{FS=OFS="="}NR==FNR{a[$1]=$2;next}{if ($1 in a) {print;delete a[$1]}} \
END{print "\nnot completed fields:";for (i in a) print i,a[i]}' empty filled
Name="George"
Surname="Vasiliou"
Age="42"
Address="Europe"
not completed fields:
Married=""
Kids=""
尤其是在awk中,如果您從{if ($1 in a) {print;delete a[$1]}}
刪除打印,則END部分將僅打印出缺少的字段。
一個不錯的可視化界面另一種方法是用diff工具:
$ diff -y <(sort empty) <(sort filled)
Address="" | Address="Europe"
Age="" | Age="42"
Kids="" | Name="George"
Married="" | Surname="Vasiliou"
Name="" <
Surname="" <
已更新。讓我知道上述解決方案是否合適。 –
如果你有兩個空白表格的文字版本和填好的表格,試試這個在shell:'差異BlankFile.txt FileWithData .txt'。這是否給你所需要的?如果是這樣,編寫一個Scala程序來迭代兩個文本文件並比較數據。如果您有困難,請在這裏展示您的工作,我們會爲您提供幫助。 – radumanolescu