`
m635674608
  • 浏览: 5041048 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

【Shell脚本】逐行处理文本文件 && 空格变换行

 
阅读更多

参考: http://www.cnblogs.com/dwdxdy/archive/2012/07/25/2608816.html

 

经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下:

1.通过read命令完成.

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.

利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.

当文件没有可读的行时,read命令将以非零状态退出.

复制代码
1 cat data.dat | while read line
2 do
3     echo "File:${line}"
4 done
5 
6 while read line
7 do 
8     echo "File:${line}"
9 done < data.dat
复制代码

2.使用awk命令完成

awk是一种优良的文本处理工具,提供了极其强大的功能.

利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据.

1 cat data.dat | awk '{print $0}'
2 cat data.dat | awk 'for(i=2;i<NF;i++) {printf $i} printf "\n"}'

第1行代码输出data.dat里的每行数据,第2代码输出每行中从第2列之后的数据.

如果是单纯的数据或文本文件的按行读取和显示的话,使用awk命令比较方便.

 

3.使用for var in file 命令完成

for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.

复制代码
1 for line in $(cat data.dat)
2 do 
3     echo "File:${line}"
4 done
5 
6 for line in `cat data.dat`
7 do 
8     echo "File:${line}"
9 done
复制代码

如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.

如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.

可以通过把IFS设置为换行符来达到逐行读取的功能.

demo:

假设现需要读取如下的文件rollback_config.txt:

ROLLBACK_SERVICES:upserv  checkserv

ROLLBACK_VERSION:v1.1

使用   for line in `cat rollback_config.txt`; do echo "${line}"; done  读取的结果会是:

ROLLBACK_SERVICES:upserv 

checkserv

ROLLBACK_VERSION:v1.1

显然不是我们想要的。

 

解决方法:

IFS_old=$IFS
IFS=$'\n'
for line in  `cat  rollback_config`;do
echo "$line"
done;
IFS=$IFS_old

这样一来就可以了!

 

 

 

IFS的默认值为:空白(包括:空格,制表符,换行符).

分享到:
评论

相关推荐

    Shell脚本逐行读取文本文件(不改变文本格式)

    在Shell脚本中,逐行读取文本文件是一项常见的任务,尤其在处理数据或执行基于文件内容的操作时。本文将详细讲解如何不改变文本格式地读取文本文件内容。 首先,我们来看一下最常见的用于逐行读取文件的脚本片段: ...

    如何在Shell脚本中逐行读取文件.doc

    Shell 脚本逐行读取文件方法详解 在Shell脚本中逐行读取文件是一种常见的操作,下面我们将详细介绍四种不同的方法来实现这个操作。 方法一:使用输入重定向 使用输入重定向是逐行读取文件的最简单方法。在while...

    shell脚本替换文件中的tab为空格,删除空白行(空白行:有空格而没有字符)

    shell脚本替换文件中的tab为空格,删除空白行(空白行:有空格而没有字符)

    Shell脚本从文件中逐行读取内容的几种方法实例

    在Shell脚本中,从文件中逐行读取内容是常见的操作,通常用于处理文本文件。这里我们将详细介绍三种不同的方法:使用for循环、定义代码块并重定向以及使用while循环结合read命令。 **1. 使用for循环从文件中逐行...

    两个 文本文件 逐行比较 文件内容 找出独有文本行

    本主题聚焦于“两个文本文件逐行比较文件内容找出独有文本行”,这是一个典型的文本处理操作,常用于查找差异、合并数据或者验证文件一致性。下面我们将详细探讨这个过程及其相关技术。 首先,我们要理解文本文件...

    Shell脚本对比两个文本文件找出不同行的2个方法分享

    您可能感兴趣的文章:PowerShell读取文本文件指定行内容的方法PowerShell比较文本文件的两个方法Shell脚本逐行读取文本文件(不改变文本格式)Powershell实现加密解密文本文件方法实例shell文件处理笔记之插入文

    使用此简单且简短的Shell脚本逐行发送整个电影脚本。-Linux开发

    使用此简单且简短的Shell脚本逐行发送整个电影脚本。 发送电影Shell脚本! 使用此简单且简短的Shell脚本逐行发送整个电影脚本。 由于以下视频https://www.tiktok.com/@jayspanks/video/6859876171530751237?lang=en...

    Shell脚本100例(文本文件)

    Linux脚本学习100例,包含以下10个文件: Shell 脚本 100 例《一》 Shell 脚本 100 例《二》 Shell 脚本 100 例《三》 Shell 脚本 100 例《四》 Shell 脚本 100 例《五》 Shell 脚本 100 例《六》 Shell 脚本 100 例...

    shell脚本生成.txt数据文件

    在IT行业中,Shell脚本是一种强大的工具,尤其在Linux或Unix操作系统中,它允许用户自动化执行一系列命令,处理文件和目录,甚至进行复杂的任务管理。在这个特定的场景中,我们关注的是如何使用Shell脚本来生成`.txt...

    shell脚本对文本文件的切割

    在这个特定的“shell脚本对文本文件的切割”主题中,我们将深入探讨如何使用Shell脚本来操作和处理文本文件,特别是如何进行切割操作。 首先,让我们了解什么是文本文件切割。在计算机领域,切割文本文件通常指的是...

    Shell脚本学习教程PDF版

    此外,Shell脚本还涉及到文件和目录操作,例如创建、删除、移动文件,列出目录内容,改变工作目录等。这些操作对系统管理至关重要。你还会学到如何利用正则表达式进行文本匹配和替换,以及如何通过逻辑运算符和比较...

    Shell脚本批量添加CSV数据到MySQL

    3. 错误处理:在脚本中加入错误检查和处理机制,如捕获并记录执行失败的行。 4. 批量插入:为了提高性能,可以考虑使用批量插入(multi-row INSERT)而不是单条插入。 5. 数据库权限:确认执行脚本的用户有足够的...

    Linux shell 脚本 markdown文本编辑

    有关几个shell脚本的编写,如:编写一个shell脚本程序,它带一个命令行参数,这个参数是一个文件。如果这个文件是一个普通文件,则打印文件所有者的名字和最后的修改日期...加入了自己的注释理解

    109个shell脚本合集.pdf

    Shell脚本是一种脚本语言,利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能。 Shell脚本可以直接使用在Windows、Unix、Linux上面,并且可以调用大量系统内部的功能来解释执行程序。如果...

    shell脚本编程100例

    shell脚本可以用于处理日志文件,例如切割Nginx日志。读者可以使用shell脚本编写一个切割Nginx日志的程序,实现自动化日志管理。 监控服务端口 shell脚本可以用于监控服务端口,例如使用netstat命令来监控服务端口...

    IDEA中编写并运行shell脚本的实现

    IDEA中编写并运行shell脚本的实现需要安装bashsupport插件,配置插件,安装git软件,配置IDEA环境,创建Bash Script文件,设置脚本文件的换行符和文件编码,运行脚本等步骤。同时,也需要注意控制台的编码设置和脚本...

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    shell脚本读文件方法和例子

    - **循环结构**:Shell脚本中的循环结构(如`while`、`for`等)常用于逐行处理文件内容。 #### 读取文件的基本方法 1. **使用`while read`循环** 这是最常见的方法之一,它可以逐行读取文件内容。例如: ```...

    shell脚本与Makefile区别.docx

    例如,在 Makefile 文件的目标项冒号后的另起一行的代码才是 shell 代码。Makefile 中的 shell 每一行是一个进程,不同行之间变量值不能传递,所以,Makefile 中的 shell 不管多长都要写在一行。Makefile 中变量以 $...

Global site tag (gtag.js) - Google Analytics