shell 分批处理文件

本贴最后更新于 2578 天前,其中的信息可能已经事过景迁

脚本初步原型:具体应用可自行修补

[root@ppzCentos5 Multi_line_read_bin]# cat Multi_line_read.sh

#!/bin/bash

##如果没有参数直接退出

if [ ! -n "$1" -o ! -n "$2" ]

then

echo "USAGE:$0 filename num"

exit

fi

##获取文件行数

MultiLines=cat $1|wc -l 1>&2 >/dev/null

#如何文件总行数和每次处理行数相等

if [ "$MultiLines" -eq "$2" ]

then

line_start=1

line_end=${MultiLines}

#echo {line_end}

#处理数据

sed -n "{line_end}p" $1>./split/date +%N current_line.txt

exit

fi

##求文件行数和每次处理行数的余数

Remainder={MultiLines}%$2))

##文件行数减余数

reduce_Remainder={MultiLines}-${Remainder}))

#参数 2 减 1

mtl=$(($2-1))

[ "$mtl" -eq 0 ]&&{

mtl=1

}

#先处理总行数减余数后的部分

for((i=1;i<{mtl})){

if [ $i -gt 1 ]

then

((i++))

line_start=$i

line_end={i}+${mtl}))

else

line_start=$i

line_end={i}+${mtl}))

fi

#echo {line_end}

#处理数据

sed -n "{line_end}p" $1>./split/date +%N current_line.txt

}

#总行数和每次处理行数除不尽,则处理余数部分

if [ "reduce_Remainder" ]

then

line_start={reduce_Remainder}+1))

line_end=${MultiLines}

#echo {line_end}

#处理数据

sed -n "{line_end}p" $1>./split/date +%N current_line.txt

fi

处理 mongodb 数据的:把公共部分写成函数

[root@ppzCentos5 Multi_line_read_bin]# cat Multi_line_Contrast_id.sh

#!/bin/bash

##如果没有参数直接退出

if [ ! -n "$1" -o ! -n "$2" ]

then

echo "USAGE:$0 filename num"

exit

fi

#############设置数据库连接信息

cmd=/root/mongodb3/bin/mongo

ip=192.168.179.132

port=27011

dbname=image

collection=fs.files

#############定义目及相关文件

dir=pwd

content={collection}_content.txt

success={collection}_success.log

fail={collection}_fail.log

runtime={collection}_runtime.log

current_lines={collection}_current_lines.txt

file_ObjectId_1=${dir}/file_ObjectId_1

file_ObjectId_2=${dir}/file_ObjectId_2

#把 id 列表转换成 ObjectId 类型

sed -n 's#^"#ObjectId("#gp' $1 1>&2 >${file_ObjectId_1}

sed -n 's#"KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲"),#gp' {file_ObjectId_1} 1>&2 >${file_ObjectId_2}

##获取文件行数

MultiLines=cat ${file_ObjectId_2}|wc -l 1>&2 >/dev/null

#############如果日志文件存在且不为空先清空

if [ -s fail ]

then

echo>$success

echo>$fail

fi

##定义公用函数

qureyHandle(){

sed -n "{line_end}p" $1 1>&2 >$current_lines

ip:dbname --quiet --eval "db.KaTeX parse error: Expected '}', got 'EOF' at end of input: …id:{\$in:[`cat current_lines`]}},{_id:1,filename:1})" 1>&2 >$content

if [ content ]

then

echo "cat $content">>$success

else

echo "cat $content">>$fail

fi

}

echo "开始时间:"date +%F" "%T>$runtime

#如何文件总行数和每次处理行数相等

if [ "$MultiLines" -eq "$2" ]

then

line_start=1

line_end=${MultiLines}

#echo {line_end}

#处理数据

qureyHandle ${file_ObjectId_2}

echo "结束时间:"date +%F" "%T>>$runtime

#处理完退出

exit

fi

##求文件行数和每次处理行数的余数

Remainder={MultiLines}%$2))

##文件行数减余数

reduce_Remainder={MultiLines}-${Remainder}))

#参数 2 减 1

mtl=$(($2-1))

[ "$mtl" -eq 0 ]&&{

mtl=1

}

#先处理总行数减余数后的部分

for((i=1;i<{mtl})){

if [ $i -gt 1 ]

then

((i++))

line_start=$i

line_end={i}+${mtl}))

else

line_start=$i

line_end={i}+${mtl}))

fi

#echo {line_end}

#处理数据

qureyHandle ${file_ObjectId_2}

}

#总行数和每次处理行数除不尽,则处理余数部分

if [ "reduce_Remainder" ]

then

line_start={reduce_Remainder}+1))

line_end=${MultiLines}

#echo {line_end}

#处理数据

qureyHandle ${file_ObjectId_2}

fi

#处理查询到的结果

awk -F[()] '{print $2}' {success}_result

awk '{print $0}' $1 {dir}/KaTeX parse error: Expected group after '_' at position 4: {1}_̲{success}_notexist

echo "结束时间:"date +%F" "%T>>$runtime

[root@ppzCentos5 Multi_line_read_bin]

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 658 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2389 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 1 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 3 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    245 引用 • 1781 回帖
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 112 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    50 引用 • 192 回帖
  • 导航

    各种网址链接、内容导航。

    45 引用 • 177 回帖 • 1 关注
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 760 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 14 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 1 关注
  • RemNote
    2 引用 • 16 回帖 • 34 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 567 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    594 引用 • 3541 回帖 • 1 关注
  • Access
    1 引用 • 3 回帖 • 1 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    61 引用 • 29 回帖 • 4 关注
  • OneDrive
    2 引用 • 4 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖 • 1 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    27221 引用 • 113937 回帖