Linux Bash-修改从stdout提取的文本



我想递归地扫描给定目录中的所有.zip文件,使用Apache Tika(在我的情况下,这是/opt/solr/bin/post脚本(将每个这样的文件中的文本提取到一个文本文件中,并将该文本文件放在原始zip文件所在的同一目录中。

递归查找所有zip文件并提取我使用的所有内容:

find . -name "*zip" -exec sh -c 'f="{}"; /opt/solr/bin/post "$f" 
-params="...params..." > "$f.txt"' ;

提取文件的内容为:

java -classpath /opt/solr/dist/solr-core-8.7.0.jar -Dauto=yes -Dout=yes -
Dparams=literal.search_area=test&extractOnly=true
&extractFormat=text&defaultField=text -Dc=mycoll 
-Ddata=files org.apache.solr.util.SimplePostTool zip.zip
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/mycoll/update?
literal.search_area=test&extractOnly=true&extractFormat=text
&defaultField=text...
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,
odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file zip.zip (application/octet-stream) to [base]/extract
{
"responseHeader":{
"status":0,
"QTime":1614},
"":"**EXTRACTED TEXT**",
"null_metadata":[
"stream_size",["79855"],
"X-Parsed-By",["org.apache.tika.parser.DefaultParser",
"org.apache.tika.parser.pkg.PackageParser"],
"stream_content_type",["application/octet-stream"],
"resourceName",["/mnt/remote/users/zhilov/!tmp/zip.zip"],
"Content-Type",["application/zip"]]}
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/mycoll/update?
literal.search_area=test&extractOnly=true&
extractFormat=text&defaultField=text...
Time spent: 0:00:03.495

从该输出中,我想删掉文件的开头和结尾,只在生成的文件中留下EXTRACTED TEXT,以便进一步索引。

可以在一个bash命令行中完成所有这些操作吗?或者至少使用bash脚本?

试试这个:

sed -n '/QTime/{N;s/.*n.*:.//;s/.,$//p;}'

这个问题解决了UTF-8问题。

最新更新