shell补-特殊玩法-shell脚本中读取文件内容

发布时间 2023-12-15 10:50:09作者: WeChat2834
shell补-特殊玩法-shell脚本中读取文件内容
  • 通过shell脚本读取文件内容然后处理
  • 这些三剑客无法独立完成
# 方式1: 采用exec读取文件后,然后进入while循环处理
exec<FILE

while read line##line是变量
do
	cmd    #语句
done
#方式2:使用cat读取文件内容,然后通过管道进入while循环处理;注意因为有管道符涉及开启子shell了。
cat FILE|while read line
do
	cmd
done
###方式3: 在while循环结尾通过done通过输入重定向指定读取的文件。推荐使用
while read line
do
	cmd
done<FILE
  • 通过while read 读取文件内容

注意read读取文件内容, 默认通过空格分隔每个列(域,字段)

修改分隔符需要修改IFS

[root@localhost readline]# cat testread.sh 
#!/bin/bash
##############################################
# File Name:testread.sh
# Version:v1.0
# Author:mrxu
# Organization:https://www.cnblogs.com/xjianbing/
##############################################
echo "-----------用exec加whil----------------"
exec<./myfile.txt
while read var
do
        echo $var
        echo 
done

echo "-----------用cat加管道符----------------"
cat ./myfile.txt |while read var
do
        echo $var
        echo 
done
echo "-----------用while结尾重定向推荐----------------"
while read var
do
        echo $var
        echo 
done<./myfile.txt
echo "----------处理保留小号----------------"
while read var
do
        echo ${var%% *}
        echo 
done<./myfile.txt
echo "----------处理保留大号----------------"
while read var
do
        echo ${var:3:2}
        echo 
done<./myfile.txt
echo "----------处理保留大号使用awk---------------"
while read var
do
        echo ${var}|awk '{print $2 }'
        echo 
done<./myfile.txt
echo "----------处理保留名称----------------"
while read var
do
        echo ${var##* }
        echo 
done<./myfile.txt
[root@localhost readline]# bash testread.sh 
-----------用exec加whil----------------
18 28 nc

12 21 yb

-----------用cat加管道符----------------
18 28 nc

12 21 yb

-----------用while结尾重定向推荐----------------
18 28 nc

12 21 yb

----------处理保留小号----------------
18

12

----------处理保留大号----------------
28

21

----------处理保留大号使用awk---------------
28

21

----------处理保留名称----------------
nc

yb

[root@localhost readline]# 


注意:bash 用-x参数可查看执行过程