zoukankan      html  css  js  c++  java
  • shell读取文件的几种方式

    案例文本文件

    [root@docker-01 ~]# cat a.txt 
    ID  name    gender  age  email          phone
    1   Bob     male    28   abc@qq.com     18023394012
    2   Alice   female  24   def@gmail.com  18084925203
    3   Tony    male    21   aaa@163.com    17048792503
    4   Kevin   male    21   bbb@189.com    17023929033
    5   Alex    male    18   ccc@xyz.com    18185904230
    6   Andy    female  22   ddd@139.com    18923902352
    7   Jerry   female  25   exdsa@189.com  18785234906
    8   Peter   male    20   bax@qq.com     17729348758
    9   Steven  female  23   bc@sohu.com    15947893212
    10  Bruce   female  27   bcbd@139.com   13942943905

    按字符数量读取

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

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

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

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

    按分隔符读取

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

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

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

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

    按行读取

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

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

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

    [root@docker-01 ~]# while read line;do echo "$line"; done <a.txt

    一次性读取整个文件   

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

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

    按分隔符读取

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

  • 相关阅读:
    CSS属性值一览
    CSS属性一览
    CSS选择器一览
    HTML颜色编码
    游戏
    数据库系统概念
    关于总结
    章节测试
    我的博客皮肤
    Emeditor所有快捷键操作
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12386278.html
Copyright © 2011-2022 走看看