shell脚本处理文件

Linux Shell脚本:逐行处理文件内容 你可以根据自己的需求修改脚本中的处理逻辑,以实现不同的功能。例如,你可以将每一行的内容写入另一个文件,或者对行进行计数等等。Shell脚本提供了丰富的工具和命令,可以满足各种文件处理的需求。在Linux Shell中,我们经常需要处理文件内容,其中一种常见的需求是逐行读取文件并对每一行进行处理。本文将介绍如何使用Shell脚本来实现这个功能,并提供相应的源代码供参考。现在,我们将编写一个Shell脚本来逐行读取并处理这个文件。文件的内容,并将每一行的首字母大写后输出到屏幕上。当你运行脚本时,它将逐行读取。 阅读详情

项目简介

具体代码没有实施,可能路径啥的需要调整!整体框架是行的通的!
目的:添加员工名单
用shell脚本从服务器拿数据到本地,将数据存到mysql,进行处理后存到本地,然后再发送到服务器.
tip(sh代码直接用window写入txt文件(换行格式为/r/n),然后再将txt名字改成name.sh时,上传到linux。执行sh脚本时会报错!建议直接在linux里编辑sh脚本(换行格式为LF))

代码文件

创建数据库

CREATE TABLE `testdatas` (
  `sno` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `age` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `sex` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `inputdate` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `export_status` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE `testdata` (
  `sno` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `age` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `sex` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `inputdate` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `export_status` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

main.sh

. ./log_hp.conf#下文有文件内容
. ./dir_hp.conf#里面可以写一些常量 比如path=/root/data/input HOST=yourhost
INPUT1=testdata
OUTPUT1=testdata2
INPUTSPNAME=datafrom
OUTPUTSPNAME=datato
path1=/export/nfs/IF/receive/HP/
path2=/root/if/hp/
HOST=w3v2_rizap_hulft
scp ${HOST}:${path1}/${INPUT1}* ${path2}
ssh ${HOST} "sudo mv ${path1}/${INPUT1}* ${path1}/LOG/"
if [-d ${path2}/${INPUT1}* ]; then 
#cd path
sh ${INPUTSPNAME}.sh
log_info "${INPUTSPNAME} start"
sh ${OUTPUTSPNAME}.sh
log_info "${OUTPUTSPNAME} start"
#发送到服务器
scp ${path2}/${OUTPUT1}* ${HOST}:${path1}/
else
log_info "file not found ..."
fi

log_hp.conf文件

function log_info() {
  echo $(date '+%Y-%m-%d %H:%M:%S') [INFO] $* >> hp_batch.log
}

datafrom.sh

#!/bin/sh
OUTPUT1=testdata2
path2=/root/if/hp/
SPNAME=File_to_Mysql
TABLENAME=testdata
# "消除 SJIS→UTF8変換
sed -e s/$'"'//g path${FILENAME}*${EXP} | iconv -f cp932 -t utf8 |  tr -d '\r' > ${path2}/testdataUTF8
mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} --default-character-set=utf8 -e"truncate table ${TABLENAME}"
mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} --default-character-set=utf8 -e"LOAD DATA LOCAL INFILE '${path2}/testdataUTF8' INTO TABLE ${TABLENAME} FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} --default-character-set=utf8 -e"call ${SPNAME}"

datato.sh

#!/bin/sh
OUTPUT=testdataOUT
OUTPUT1=testdata
path2=/root/if/hp/
SPNAME=Mysql_to_File
# 调用存储过程
mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} --default-character-set=utf8 -e"call ${SPNAME}" > ${path2}/${OUTPUT1}*

# 用t替换逗号,删除第一行、UTF8→SJIS转换
sed -e s/$'\t'/,/g ${path2}/${OUTPUT}* | sed -e '1d' | iconv -f utf8 -t cp932 > ${path2}/${OUTPUT1}*
mysql -h${DB_HOST} -u${DB_USER} -p${DB_PASS} -D${DB_NAME} --default-character-set=utf8 -e"update ${TABLENAME} set HP_export_status = 1 where HP_export_status = 0;"

procedure.sql

-- File_to_mysql
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `File_to_mysql`()
begin

update
	testdata
set
	inputdate = date_format(timestampadd(hour, 9, now()), '%Y%m%d%H%i%s'),
    export_status = 0
where
	export_status is null
;
-- testdatas是一个员工总表,目的是删除总表员工编号与新加员工编号相同的编号
delete from
	testdatas
where
	sno in (select sno from testdata)
;
-- 插入新员工
insert into
	testdatas
select * from testdata
;
-- Index重构 方便快速查询
drop index material_index on testdatas;
create index material_index on testdatas (sno);
end ;;
DELIMITER ;

-- Mysql_to_File
DELIMITER ;;
CREATE DEFINER=`root`@`%` PROCEDURE `Mysql_to_File`()
begin
-- 查询新员工(状态为0的)
select * from
    testdatas
where
    export_status = 0
;
end ;;
DELIMITER ;

log_hp.conf日志输出

function log_info() {
  echo $(date '+%Y-%m-%d %H:%M:%S') [INFO] $* >> jm_batch.log
}

function slack() {
  local msg="$*"
  local slackapi=https://hooks.slack.com/services/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
  local username=jeansmate@rizap-jm
  icon=jeansmate1
  msg2=`echo $msg | sed -e 's/"/\\\\"/g'`
#  /usr/bin/curl -q -X POST --data-urlencode "payload={\"username\":\"${username}\",\"text\":\"<!channel> ${msg2}\",\"icon_emoji\":\":${icon}:\"}" ${slackapi}
}
掌握Shell脚本编写技巧:文件处理与命令行工具 本文深入探讨了Shell脚本编写中文件处理和命令行工具的使用。详细介绍了如何通过各种命令如`cat`, `cp`, `mv`等进行文件操作,以及如何利用脚本参数、文件描述符、重定向和管道等技巧提升脚本的效率和功能。同时,文中还涉及了如何在脚本中使用条件判断、循环控制、函数定义等编程元素,以实现更复杂的逻辑处理。 阅读详情

相关推荐

别只当玩具!聊聊这个555金属探测器电路背后的电磁感应与RLC调谐原理

本文深入解析了555金属探测器电路的工作原理,重点探讨了电磁感应与RLC调谐原理。通过分析电感线圈的电磁特性、RLC谐振电路的行为以及555定时器的多重功能,揭示了这一看似简单的装置如何实现金属检测。文章还提供了灵敏度优化方案和常见问题解决方法,帮助读者从科学角度理解这一实用技术。

weixin_29204205的博客 477

从shell提示符编辑文本文件

最低程度的基本vim工作流 i键可使vim进去插入模式。在此之后输入的所有文本都将被视为文件内容,直到您退出插入模式。 Esc键可退出插入模式,并让vim返回到命令模式。u键可撤销最近的编辑。 x键可删除单个字符。 :w命令可写入(保存)文件,并保留在命令模式中以进行更多的编辑。 :wq命令可写入(保存)文件并退出vim。 :q!命令可退出vim,同时放弃上次写入以来进行的所有更改。 重排现有文本 在vim中,复制和粘贴称为拖拉和放置,使用的命令字符是y和p。首先将光标定位到要选择的第一个字

m0_75204988的博客 462

四足机器人跨楼层轨迹规划:SCAN-Planner-Pure-ROS2开源项目实践指南

在机器人导航领域,路径规划是让机器人从起点安全、高效移动到目标点的核心技术。其原理通常基于环境地图(如占据栅格地图或八叉树地图),通过搜索算法(如A*、RRT*)在配置空间中找到一条无碰撞的可行路径。这项技术的价值在于赋予机器人在复杂、非结构化环境中的自主移动能力,是巡检、救援、物流等应用场景的基石。对于四足机器人而言,其运动能力超越了轮式平台,能在楼梯、斜坡等三维地形中移动,这使得传统的二维规划不再适用,需要专门的三维轨迹规划算法。SCAN-Planner-Pure-ROS2正是这样一个专注于解决四足机器

weixin_30700977的博客 464

shell编程 文件内容的修改: 命令grep、uniq、sort、tr、cut、split、paste详解

主要针对文件内容进行操作,对文件内容进行过滤、修改、排序。

Breeze_nebula的博客 3921

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 217

编程_三大编程思想:POP、OOP、AOP

简单介绍POP、OOP、AOP三大编程思想的区别和优缺点~

mikimo的博客 3895

Shell 脚本进入编辑模式和保存退出

Shell 既是一个连接用户和 Linux 内核的程序,又是一门管理 Linux 系统的脚本语言,shell 脚本类似 windows 的批处理文件,shell 脚本就是将连续执行的命令写成一个文件。shell 脚本提供数组、循环、条件判断等功能。

安卓兼职framework和app工程师的博客 3万+

trae CN 配置ida的mcp教程

本文介绍了在TraeCN中配置IDA Pro MCP服务的完整步骤:1)准备IDA Pro 9.0+和Python 3.11+环境;2)安装MCP服务端并配置插件;3)生成MCP配置文件;4)在TraeCN中添加HTTP类型MCP服务(默认端口13337);5)测试连接。重点说明了HTTP配置方式的操作流程,包括手动启动服务、正确填写JSON配置等关键环节。

2401_87915504的博客 1956

【shell脚本创建编辑文件,读取文件】

学习shell入门笔记!

qq_42065917的博客 6279

利用 vivado实现加减法器的设计

本科计组实验:利用 vivado实现加减法器的设计

qq_52052302的博客 1万+

SLAM 轨迹评估工具——EVO安装、使用介绍

evo是一款用于视觉里程计和SLAM问题的轨迹评估工具. 核心功能是能够绘制相机的轨迹, 或评估轨迹与真值之间的误差. 支持多种数据集的轨迹格式(TUM、KITTI、EuRoC MAV、ROS的bag), 同时支持这些数据格式之间的相互转换,本文轨迹展示以tum数据格式为例。

u010196944的博客 1万+

Shell脚本

echo "Hello Shell" >> /root/TTT/one.txt #输出数据到one.txt文件中。chmod a+x hello.sh #修改hello.sh文件的权限 a全部赋予 x执行权限。touch 创建文件 文件名/root/TTT/one.txt。touch batch.sh 创建.sh文件。vim batch.sh 编辑.sh文件。sh执行脚本文件: sh hello.sh。路径执行脚本文件: ./hello.sh。

weixin_56541352的博客 734

8155源码编译DSP(ubuntu环境下)

一.设置环境变量 -users:/$ sudo gedit ~/.bashrc #set adsp cdsp tools path #export ARMLMD_LICENSE_FILE=<LICENSE FILE INFO> #export ARMTOOLS=RVCT221 #export ARMROOT=/pkg/asw/compilers/arm/ADS1.2 #export ARM_COMPILER_PATH=/pkg/qct/software/arm/RVDS/2.2BLD593

Johnny2004的专栏 1676

linux下shell脚本实现文件的批量处理

linux下shell脚本实现文件的批量处理说明:1、shell文件创建2、文件编辑注意:3、执行shell文件4、停止正在执行shell文件 说明: 在使用linux虚拟机处理数据的过程中,由于需要处理的文件量较大,并且有大量重复的操作,为了省时省力,发现可以使用shell脚本一次处理大量的文件。 1、shell文件创建 命令行输入touch XXX.sh 2、文件编辑 命令行输入vi XXX....

我的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

shell 脚本读写处理文件

<br />#!/bin/sh<br />#文件的源处理路径<br />fileName=$1<br />#文件的目录处理路径<br />resultBillPath=$2<br />i=1<br />if [ -f $fileName ];then<br /> cat $fileName|while read Line;<br /> do <br /> #种子id号,除以1000后的<br /> id=`echo $Line | awk -F ',' '{print $1}'

demeanor的专栏 5751

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

shell脚本,每次读取文件的一行,逐行读取并处理

shell脚本,每次读取文件的一行,逐行读取并做显示处理,如需其它处理,自行修改即可。 写法一: Example 1 2 3 4 5 #!/bin/bash while read line do       echo $line     #这里可根据实际用途变化 done

cythia45的专栏 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Shell脚本逐行处理文本文件技巧

本文主要给大家介绍了关于Shell脚本如何逐行处理文本文件的相关资料 经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。VariableName (变量名)参数指定给每一个字段的值,由 VariableName (变量名)参数指定的以此类推,直到最后一个.

Free雅轩的博客 1776

linux脚本批处理,使用 shell 脚本批量处理文件

从网上自动下载的电影字幕文件中,大部分是srt,ass\ssa 这类的文本文件,另外有些是压缩包(目前只有 rar 和 zip)。需要批量解压这些文件,并清理不合格文件和目录。我大概想了想,shell 脚本应该是相对轻量、简单而且代码量小的方式了,于是写了这个我平生第一个有用的 shell 脚本。脚本功能:遍历 subtitle 目录,然后在电影目录下的英文(eng)目录执行一些操作:如果是压缩文...

weixin_27183235的博客 1111

shell python运维脚本_shell 处理文件脚本

[root@centos-6 ~]# cat info_file.txtlys:28:shanxizhy:28:shanxi[root@centos-6 ~]# cat info_file2.txtlys 28 shanxizhy 28 shanxi[root@centos-6 ~]# cat print.sh#!/bin/bashfor i in `cat info_file.txt`donam...

weixin_39604685的博客 128

shell脚本 处理当前目录下文件

for file in ./CeleFile/* do if test -f $file then echo $file is file sleep 2 ./DeviceNoEncTool $file 0 & else echo $file 是dir fi done

q286989429的专栏 834

Linux Shell 脚本:批量处理文件的实用案例

文件中的 "ERROR" 替换为 "WARNING"。)和循环结构,可灵活解决各类批量文件处理需求!文件添加日期前缀(如。

2501_93893723的博客 480

【问题解决记录】Shell 脚本处理windows系统的excel文件(乱码处理)

想通过shell脚本读取excel文件。excel 是window系统的,由于shell脚本未安装插件的情况下只能处理csv 文件,所以需要将excel文件另存为csv文件,传到linux服务器上。在linux服务器上 打开csv文件可能会出现乱码,这种情况是编码不同导致的。通常在window上另存为的编码格式是GB2312需要转成UTF-8。如果不知道自己文件是以什么编码形式保存的,可以把文件用vscode打开,在上面切换编码类型,找到正常的展示对应的编码格式。通过以下命令转码到处。

weixin_45226765的博客 659

【Shell脚本】逐行处理文本文件

经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中. 利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本. 当文件没有可读的行时,read命令将以非零...

weixin_30920091的博客 1154

shell脚本读取csv_shell script 处理 CSV 文件(Excel)

CSV 是一种非常方便的数据交换格式。业务人员可以方便的在 Excel 进行编辑,然后上传到业务系统中。但是对于 Developer,Excel 略显笨重,并且编程方便并不那么友好。本文将介绍一种方式,在 shell script 中处理 CSV 文件。内容涉及:提取数据行统计行数输出指定列按列排序比较两列数据其中将使用如下指令:catgrepawkwcsortvimdiff提取数据行中国城市近 ...

weixin_39520595的博客 5892

linux【Shell脚本】逐行处理文本文件

经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中. 利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本. 当文件没有可读的行时,read命令将

我的博客 8986
上一篇: Mysql与Oracle语法差异
下一篇: java继承
hadoop的大象
博客等级 码龄7年 62粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值