Linux Bash - 修改从标准输出中提取的文本
Linux Bash - modifying extracted text from 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;}'
This question 解决了 UTF-8 问题。
我想递归扫描所有 .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;}'
This question 解决了 UTF-8 问题。