0

我有一个非像素化的 pdf,已转换为.tdt. 我正在尝试从中提取一些特定信息以放入 html 表格中。我想提取“名称”,后跟空格,然后是我要捕获的数字。在我要捕获的名称之前还有两个其他名称之间有空格。该数字可能如下所示,125000009856472333 或 125LLLLVI4673302 或 125689*990000。我写了这两行:

s="$s; s/^.*(Name)  +(*.)$/\2/p" |sed -rn "$s" input.files.txt

s="$s; s/^.*  +*.(Name)  +*(0-9a-zA-z)$/\2/p" |sed -rn "$s" input.files.txt

我什么也没收到

s="$s; s/^Name *([^)]+)/Name\t([^)]+)/p" |sed -rn "$s" input.files.txt

输出是**:** Name ([^)]+) 而不是 Invoice Number 和我们要捕获的号码。

我想用它来处理我连接的 21 个文件。结果应该是两列,一列包含名称,另一列包含字母、数字和可能的一些特殊字符的不同组合。

4

1 回答 1

0

如果没有最小的、可重现的示例和/或更多细节,我无法确定,但要捕获空格后的名称和数字/字母,您可能需要类似以下内容:

sed -n 's/.*\(Name\)[[:space:]]\{1,\}\([[:alnum:]]\{1,\}\)/\1\t\2/p' file

如果需要,您还可以添加特殊字符[[:alnum:]],例如[[:alnum:]+-,.],如果要捕获除空格以外的所有可打印字符,也可以更改[[:alnum:]]为。[[:alnum:][:punct:]]

这是否回答你的问题?

于 2022-03-03T23:08:13.820 回答