gpt4 book ai didi

linux - 使用 pdfgrep 搜索字符串并格式化输出

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:04 25 4
gpt4 key购买 nike

我正在使用 pdfgrep 在存储在目录中的多个 pdf 中搜索名称并将结果存储在文件中:

pdfgrep -R '我的字符串' > ../output-file

它打印以下输出:

./file1.pdf:     91   My String                               Just_another_string                   75              53            49            30              57               48                74             69
./file2.pdf: 8 My String Just_another_string 40
./file3.pdf: 92 My String Just_another_string 64 62 76 50 76 88 80 148

我在输出的每一列之间的每一行中都得到了很多不必要的空格。我想重新格式化输出,使这些多个空格减少到每列之间只有一个空格。

有什么办法可以做到吗?提前致谢。

最佳答案

快速而肮脏的方式:使用 awk。假设格式总是这样:(假设你原来的命令是正确的)

pdfgrep -R 'My string' | awk '{print "$1 $2 $3 $4 $5 $6 $7 $8 $9"}' > ../output-file

根据评论编辑:

@Inian 的答案更好(因为它处理任意数量的列),但简而言之,我正在做的是告诉 awk 用空格分割输入,然后在每列之间用一个空格将其打印回来。 .. 例如,您可以通过不包括 $1 来跳过第一列,或者通过打印 $4 $3) 来交换第 3 列和第 4 列。

为了提高效率,如果你想把它塞进数据库,你可能想考虑使用 Python(或 Perl 或 PHP,但快速检查我的个人资料应该显示我的偏好)来实际执行 SQL 导入。 500 个 PDF 并没有真正使我分阶段……我希望您可以摆脱类似的情况:

pdfgrep -R 'My string' > ../output-file

然后运行一个看起来像这样的python程序:

import sys

with open("output-file","rt") as f:
for line in f:
data = line.split() #now you have an array split by whitespace
cleanline = " ".join(data) #now each element has a single space between it and the next
#or you could just stick data directly into the database; details omitted because there are way too many variables here

关于linux - 使用 pdfgrep 搜索字符串并格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com