linux 中while 循环read读入数据 使用IFS指定分割符

发布时间 2023-12-31 21:32:47作者: 小鲨鱼2018

 

001、测试数据

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt        ## 测试数据
d_j j k
d d_kk

 

002、不指定分隔符

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt                                    ##   测试数据
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while read i; do echo $i; done   ## 只给一个变量,默认读入的是整行
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while read {i,j}; do echo $i; done   ## 给两个变量,默认以空格或者制表符分割
d_j
d
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $i; done  ## 同上
d_j
d
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $j; done     ## 同上
j
d_kk
[root@pc1 test1]# cat a.txt | while read {i,j,k}; do echo $k; done    ## 多个变量时,默认以空格分割
k

[root@pc1 test1]#

 

003、使用IFS,但是什么也不指定

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt                            ## 测试数据
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read i; do echo $i; done   ## 使用IFS,但是什么也不指定,默认读入整行
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j}; do echo $i; done   ## 给与两个变量,默认读入整行,第一个变量
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $i; done   ## 使用3个变量,默认读入整行,
d_j j k
d d_kk
[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $j; done    ## 使用3个变量,读入整行,2变量为空


[root@pc1 test1]# cat a.txt | while IFS= read {i,j,k}; do echo $k; done    ## 同上


[root@pc1 test1]#