shell读取文件的几种方式

案例文本文件

[[email protected]01 ~]# cat a.txt
ID  name    gender  age  email          phone
1   Bob     male    28   [email protected]     18023394012
2   Alice   female  24   [email protected]  18084925203
3   Tony    male    21   [email protected]163.com    17048792503
4   Kevin   male    21   [email protected]189.com    17023929033
5   Alex    male    18   [email protected]    18185904230
6   Andy    female  22   [email protected]139.com    18923902352
7   Jerry   female  25   [email protected]189.com  18785234906
8   Peter   male    20   [email protected]     17729348758
9   Steven  female  23   [email protected]    15947893212
10  Bruce   female  27   [email protected]139.com   13942943905

按字符数量读取

read的-n选项和-N选项可以指定一次性读取多少个字符。

[[email protected]01 ~]# read -n 1 data <a.txt
# 只读一个字符
[[email protected]-01 ~]# read -n 100 data < a.txt
# 读100个字符,但如果不足100字符时遇到换行符则停止读取
[[email protected]-01 ~]# read -N 100 data < a.txt
# 强制读取100字符,遇到换行符也不停止

如果按照字符数量读取,直到把文件读完,则使用while循环,且将文件放在while结构的后面,而不能放在while循环的条件位置:

[[email protected]01 ~]# while read -N 3 data;do echo "$data"; done < a.txt

按分隔符读取

read命令的-d选项可以指定读取文件时的分隔符。

[[email protected]01 ~]# read -d "m" data <a.txt
# 一直读取,直到遇到字符m才停止,并将读取的数据保存到data变量中

如果要按分隔符读取并读完整个文件,则使用while循环:

[[email protected]01 ~]# while read -d "m" data ;do echo "$data"; done < a.txt

按行读取

read默认情况下就是按行读取的,一次读取一行。

[[email protected]01 ~]# read line <a.txt
# 从a.txt中读取第一行保存到变量data中

如果要求按行读取完整个文件,则使用while循环:

[[email protected]01 ~]# while read line;do echo "$line"; done <a.txt

一次性读取整个文件   

要一次性读取完整个文件,有两种方式:

  • 按照字符数量读取,且指定的字符数要大于文件的总大小
  • 按分隔符读取,且指定的分隔符是文件中不存在的字符,这样的话会一直读取,因为找不到分隔符而读完整个文件
[[email protected]01 ~]# read -N 1000000 data <a.txt
[[email protected]-01 ~]# echo $data
# 指定超出文件大小的字符数量
[[email protected]-01 ~]# read -d "_" data <a.txt
[[email protected]-01 ~]# echo $data
# 指定文件中不存在的字符作为分隔符
done

按分隔符读取

read命令的-d选项可以指定读取文件时的分隔符。

原文地址:https://www.cnblogs.com/liujunjun/p/12386278.html

时间: 2024-07-29 12:53:25

shell读取文件的几种方式的相关文章

FileReader读取文件的三种方式

package com.agoly.test; //import java.io.*; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class FileTest { public static void main(String[] args) { // 读取文件的方式一:逐个字符来读取文本文件 FileReader fr = null; try { fr

关于java读取文件的几种方式

摘自:http://jaczhao.iteye.com/blog/1616716 Java代码 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.prin

Java读取文件的几种方式

package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; impor

shell读取文件每一行的方式

1.使用read命令读取一行数据 while read myline do echo "LINE:"$myline done < datafile.txt 2.使用read命令读取一行数据 cat datafile.txt | while read myline do echo "LINE:"$myline done 3.#读取一行数据 cat datafile.txt | while myline=$(line) do echo "LINE:&qu

java读取XML文件的四种方式

java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>河南省郑州市</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>河南省郑州市二七区&

简介C#读取XML的两种方式

简介C#读取XML的两种方式 作者: 字体:[增加 减小] 类型:转载 时间:2013-03-03 在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询 XML作用 对于XML,想必各位都比较了解,我也就不用费笔墨来描述它是什么了,我想在未来的Web开发中XML一定会大放异彩,XML是可扩展标记语言,使用它企 业可以制定一套自己的数据格式.用于Internet的数据

C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式

前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要操作的Excel文件,并在后面的textBox中显示出文件路径. 设置单元格按钮,可以根据程序设置Excel文件的内容. 退出程序按钮,关闭窗体. 程序源代码 1 using System; 2 using System.Collections.Generic; 3 using System.Com

解析Xml文件的三种方式及其特点

解析Xml文件的三种方式 1.Sax解析(simple api  for xml) 使用流式处理的方式,它并不记录所读内容的相关信息.它是一种以事件为驱动的XML API,解析速度快,占用内存少.使用回调函数来实现. 1 class MyDefaultHander extends DefaultHandler{ 2 private List<Student> list; 3 private Student student; 4 5 @Override 6 public void startDo

Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 Properties p = new Properties(); // 加载classpath目录下的vm文件 // 这里是加载模板VM文件,比如:/META-INF/template/Web_B2CPayment.vm(请参考mas_spring_integration.xml) p.setProperty("file.resource.loader.class", "org.apa