如何在Shell脚本中逐⾏读取⽂件
在这⾥,我们学习中的3种⽅法来逐⾏读取⽂件。
⽅法⼀、使⽤输⼊重定向
逐⾏读取⽂件的最简单⽅法是在while循环中使⽤输⼊重定向。
为了演⽰,在此创建⼀个名为“ ”的⽂本⽂件,⽂件内容在下⾯:
[root@localhost ~]#
This is a sample file
We are going through contents
shell最简单脚本line by line
to understand
[root@localhost ~]# cat example1.sh
#!/bin/bash
while read rows
do
echo "Line contents are : $rows "
done <
- 开始while循环,并在变量“rows”中保存每⼀⾏的内容
- 使⽤echo显⽰输出内容,$rows变量为⽂本⽂件中的每⾏内容
- 使⽤echo显⽰输出内容,输出内容包括⾃定义的字符串和变量,$rows变量为⽂本⽂件中的每⾏内容Tips:可以将上⾯的脚本缩减为⼀⾏,如下:
[root@localhost ~]# while read rows; do echo "Line contents are : $rows"; done <
⽅法⼆、使⽤cat和管道符
第⼆种⽅法是使⽤cat命令和管道符|,然后使⽤管道符将其输出作为输⼊传送到while循环。
创建脚本⽂件“ example2.sh”,其内容为:
[root@localhost ~]# cat example2.sh
#!/bin/bash
| while read rows
do
echo "Line contents are : $rows "
done
- 使⽤管道将cat命令的输出作为输⼊发送到while循环。
- |管道符将cat输出的内容保存在"$rows"变量中。
- 使⽤echo显⽰输出内容,输出内容包括⾃定义的字符串和变量,$rows变量为⽂本⽂件中的每⾏内容Tips:可以将上⾯的脚本缩减为⼀⾏命令,如下:
[root@localhost ~]# |while read rows;do echo "Line contents are : $rows";done
⽅法三、使⽤传⼊的⽂件名作为参数
第三种⽅法将通过添加$1参数,执⾏脚本时,在脚本后⾯追加⽂本⽂件名称。
创建⼀个名为“ example3.sh”的脚本⽂件,如下所⽰:
[root@localhost ~]# cat example3.sh
#!/bin/bash
while read rows
do
echo "Line contents are : $rows "
done < $1
- 开始while循环,并在变量“rows”中保存每⼀⾏的内容
- 使⽤echo显⽰输出内容,$rows变量为⽂本⽂件中的每⾏内容
-
使⽤输⼊重定向<;从命令⾏参数$1读取⽂件内容
⽅法四、使⽤awk命令
通过使⽤awk命令,只需要⼀⾏命令就可以逐⾏读取⽂件内容。
创建⼀个名为“ example4.sh”的脚本⽂件,如下所⽰:
[root@localhost ~]# cat example4.sh
#!/bin/bash
|awk '{print "Line contents are: "$0}'
总结
本⽂介绍了如何使⽤shell脚本逐⾏读取⽂件内容,通过单独读取⾏,可以帮助搜索⽂件中的字符串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。