如何实现shell逐行读取文件?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者需要使用shell实现逐行(一行一行)地读取文件行并处理,于是整理如下。

2 最佳实践

2.1 while循环配合read命令

#!/bin/bash

while read line; do
        echo "$line"
done < "/var/log/messages"

或者,按如下方式书写,

#!/bin/bash

cat "/var/log/messages" | while read line; do
        echo $line
done

2.2 Pipemill的方式读取

#!/bin/bash

cat "/var/log/messages" | while read partA partB partC; do
        echo $partA
        echo $partB
        echo $partC
done

或者,按如下方式书写,

#!/bin/bash

while read partA partB partC; do
        echo $partA
        echo $partB
        echo $partC
done < "/var/log/messages"

注:Pipemail中文翻译为“制管机”,用法是管道配合“while”循环以及“read”读取管道传递的多个变量并利用。

参阅文档
=====================
https://www.cnblogs.com/scoter2008/p/6012961.html

没有评论

发表回复

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …

Bash
如何获取VSFTP昨天活跃和有效用户?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台老旧的FTP服务器,用户众多。笔者希望每天 …