shell文件读取

news2024/11/25 2:23:08

文件读取

一、while+for

shell中读取文件有两种方式 whilefor

while

#!/bin/bash
cat filename | while read line
do
    etho $line
done

for

#!/bin/bash
for line in `cat filename(待读取的文件)`
do
    echo $line
done

第三中写法,上述两种方式的升级写法

#!/bin/bash
while read line
do
    echo $line
done < filename

while和for读取的区别

  • while对文件读是逐行读完后跳转到下行

  • for对文件的读是按字符串的方式进行的,遇到空格什么后,再读取的数据就会换行显示

  • while相对for的读取很好的还原数据原始性

二、搭配read

read接收键盘或其它⽂件描述符的输⼊。read命令接收标准输⼊(键盘)的输⼊,或者其他⽂件描述符的输⼊。得到输⼊后,read命令将数据放⼊⼀个标准变量中。
read 命令格式如下:

read [选项] [变量名]

常用选项

选项名
-p打印提示信息来提示用户输入正确的内容
-t设置用户输入的时间限制;超时则退出程序
-r允许用户输入特殊字符,如 空格、/、\、?等
-a赋值数组

-r选项,允许输入一些空格、反斜杠之类的特殊字符
在这里插入图片描述

如果read不明确指定按字符数读取文件(或标准输入),那么默认是按行读取的,而且每读一行都会在那一行处打上标记(即文件指针。当然,按字符数读取也一样会打上标记),表示这一次已经读取到了这个地方,使得下次仍然能够从这里开始继续向下读取。这使得read结合while使用的时候,是按行读数据非常好的方式。

数据:

[sjj@VM-20-15-centos shell]$ cat aaa.txt 
aaa
bbb
ccc
ddd
eee
fff
  • 写法一:
[sjj@VM-20-15-centos shell]$ cat aaa.txt | while read line; do echo $line ; done
aaa
bbb
ccc
ddd
eee
fff
  • 写法二:(推荐用这个)
[sjj@VM-20-15-centos shell]$ while read line; do echo $line ; done < aaa.txt 
aaa
bbb
ccc
ddd
eee
fff

这段代码会将 aaa.txt 文件的内容传递给 read 命令,然后 read 命令每次读取文件中的一行,并将其保存在 $line 变量中。当文件读取完毕时,循环也就结束了。

  • 写法三:
[sjj@VM-20-15-centos shell]$ while read line < aaa.txt ; do echo $line ; done 
### 陷入死循环

注意
强烈建议,不要在管道后面使用while read line,原因如下:

  • 管道"|"会开启子shell, while循环都在子shell的运行,子shell的变量变化不会影响到外面(父shell)所以很多情况下无法获取while循环体的变量。

  • 同时cat file也一次读取了所有的内容,并装入内存,如果文件足够大,就会占据巨量内存。

  • 不要使用示例3, 只读取文件的第一行,并且陷入死循环。

批量调用脚本,并且将日志结果输出到result_file

当前目录下有这些文件:

在这里插入图片描述

所有的数据包存储在test_pcap下:

[?????_shixi@32f1b607a708 test_pcap]$ ls
pcap.txt  shixi_pcaps  shixi_pcaps.tgz

把所有的shixi包:ls > pcap.txt 文件名称导入pcap.txt中

#!/bin/bash

# 存储 pcap 数据包路径的文件名
pcap_list="./test_pcap/pcap.txt"
# 存储测试结果的文本文件名
result_file="./result.txt"

# 清空之前的结果文件
echo "" > "$result_file"

# 读取所有 pcap 文件路径并进行测试
while read -r pcap_file; do
    echo "Testing $pcap_file ..."
    # 调用测试脚本,并将输出结果添加到指定的文本文件中
    python priority_result_check.py -p "./test_pcap/shixi_pcaps/$pcap_file" >> "$result_file"
done < "$pcap_list"

现在可以写一些命令行监控的脚本了

while true ; do ps axj | head -1 && ps axj | grep mysqld | grep -v grep ; echo "#####################"; sleep 1 ; done

在这里插入图片描述

参考文章:
https://zhuanlan.zhihu.com/p/546235328
https://blog.csdn.net/qq_26620783/article/details/87430195

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL-约束

SQL-约束 1.1 概念 约束是作用于表中列上的规则&#xff0c;用于限制加入表的数据约束的存在保证了数据库中数据的正确性、有效性和完整性 1.2 分类 类型描述关键字非空约束保证列中所有的数据不能有null值NOT NULL唯一约束保证列中所有数据各不相同UNIQUE主键约束主键是一行…

HTTP首部(上)

HTTP 协议的请求和响应报文中必定包含 HTTP 首部&#xff0c;只是我们平时在使用 Web 的过程中感受不到它。本章我们一起来学习 HTTP 首部的结构&#xff0c;以及首部中各字段的用法。 1.HTTP报文首部 先来看看http报文的首部结构图&#xff1a; HTTP 协议的请求和响应报文中…

不知道如何搭建帮助中心?这里有解决办法!

在今天的数字化时代&#xff0c;帮助中心已经成为许多公司所必需的一个重要部分。它是一个客户与公司沟通和交互的重要渠道&#xff0c;可以帮助客户解决问题和获得支持。本文将介绍如何搭建一个有效的帮助中心&#xff0c;以提高客户满意度和公司的效率。 一、明确帮助中心的…

哪些因素对会影响到企业制定自己的融合CDN战略

我们知道一个企业/组织有多种方法可以实现和利用多CDN战略&#xff0c;由于带宽承诺、成本、超期费用等因素&#xff0c;因此对不同的指标进行评估至关重要。 以下是可能影响您的融合CDN战略的一些因素&#xff1a; 地理因素 在选择CDN时需要考虑的一个重要因素是用户所在的…

静态内存管理

内存管理的基本概念 在一般的实时嵌入式系统中&#xff0c;由于实时性的要求&#xff0c;很少使用虚拟内存机制。所有的内存都需要用户参与分配&#xff0c;直接操作物理内存&#xff0c;所分配的内存不能超过系统的物理内存&#xff0c;所有的系统堆栈的管理&#xff0c;都由…

快速上手kettle(三)壶中可以放些啥?

快速上手kettle&#xff08;三&#xff09;壶中可以放些啥&#xff1f; 序言一 、kettle这壶能装些啥二、Access输入2.1 准备Acess数据库和表2.2 新建一个转换并设置2.3 启动转换预览数据 三、CSV文件输入3.1 准备csv文件&#xff0c;并将csv输入控件拖入工作区3.2 csv输入控件…

JDBC 拾枝杂谈—入门篇(通俗易懂)

目录 一、前言 二、JDBC介绍 1.基本概述 : 2.基本原理 : 三、JDBC模拟 1.模拟接口 &#xff1a; 2.模拟实现类 : 3.模拟测试类 : 4.模拟扩展 : 四、JDBC入门 1.编写JDBC程序的核心四部曲 : &#xff08;全文背诵&#xff09; 2.准备工作 : ①导入jar包 ②创建测试表 …

Sys Tick【转】

STM32学习及应用笔记一&#xff1a;SysTick定时器学习及应用 - STM32/STM8技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 1、SysTick究竟是什么&#xff1f; 关于SysTick在STM32的资料中并没有详细的介绍&#xff0c;这可能由于SysTick是ARM内核的东西。在…

在用对讲机中竟有近5成属于违规使用?

目前对讲机在很多领域和场景中都有着广泛的应用&#xff0c;包括建筑工地、宾馆饭店、住宅小区、大型商场超市、安保活动、物业管理等。 不过据非官方数据统计&#xff0c;在用对讲机中竟有近5成属于违规使用&#xff0c;这严重干扰了城市上空的无线电波秩序。 根据近年来无线…

多行 SQL 格式化换行调整(数据清洗、数据迁移)

多行 SQL 格式化换行调整&#xff08;数据清洗、数据迁移&#xff09; 原数据数据如下&#xff1a; select * from user_info;select * from user_info; select * from user_info;INSERT INTO student VALUES (107, zhao, NULL, 3, 北京); select * from user_info;INSERT INT…

哪个骨传导蓝牙耳机的好,几款高性能的骨传导蓝牙耳机分享清单

骨传导耳机是目前在运动领域最火热的产品&#xff0c;也是最适合运动的耳机&#xff0c;它的原理是通过颅骨将声音转化为神经冲动&#xff0c;通过内耳传至听觉中枢&#xff0c;因此不会对耳朵造成任何损伤&#xff0c;它同时也可以让耳朵更好地听到周围的声音。能够很好的提高…

hbuilderx+uniapp基于安卓的古汉语学习考试系统 微信小程序

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括古汉语学习软件APP的网络应用&#xff0c;在外国学习软件已经是很普遍的方式&#xff0c;不过国内的古汉语学习软件可能还处于起步阶段。古汉语学习软件具有古汉语、学习视频等…

2013 年一月联考逻辑真题

2013 年一月联考逻辑真题 真题&#xff08;2013-26&#xff09;-可能性推理的因果关系 26.某公司自去年初开始实施一项“办公用品节俭计划”&#xff0c;每位员工每月只能免费领用限量的纸笔等各类办公用品。年末统计时发现&#xff0c;公司用于各类办公用品的支出较上年度下降…

深度:解密智能汽车产业的3个世纪之问!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 汽车行业正在经历一场前所未有的变革&#xff0c;要理解这场深刻的汽车变革&#xff0c;我们从全新的电子电气架构&#xff0c;核心零部件的大量替换&#xff0c;到全新的制造工艺&#xff0c;探究电动车与燃油车的本质区别…

防雷工程中防雷等级的意义

在现代社会中&#xff0c;各种电子设备和通信系统已经成为我们生活中不可或缺的一部分。然而&#xff0c;雷击是这些设备和系统的一个常见问题&#xff0c;不仅会导致设备损坏&#xff0c;还可能对人们的生命财产造成威胁。因此&#xff0c;防雷措施变得尤为重要。 为了保护设…

OC 知识 多线程 GCD(源码)

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

Unity与Android交互(2)——常用交互方式

常用AndroidJavaClass/AndroidJavaObject实现C#调用Java代码&#xff0c;常用UnitySendMessage实现Java调用C#代码。 【调用代码示例】 Java代码为&#xff1a; package com.test.addtest;import com.unity3d.player.UnityPlayer;public class JavaTestClass {public static…

BM1684X移植自写算法记录

移植步骤------------------------------------------------------------------------ 首先搭建好自己的网络模型&#xff0c;并导出为onnx格式--具体可以参照--> https://github.com/warren-wzw/MNIST-pytorch.git 将onnx模型使用tpu-mlir工具转化为bmodel格式--具体可以…

2.3 TensorRT基于Entropy的校准

tensorRT的Entropy Calibration的伪代码&#xff0c;具体流程如下&#xff1a; for循环&#xff1a;遍历所有可能的分割点&#xff0c;从128到2048reference_distribution_P&#xff1a;将原始直方图bins按照当前分割点i进行切割&#xff0c;得到左侧的i个bin。outliers_count…