linux中删除文件内空白行的几种方法

有时你可能需要在 Linux 中删除某个文件中的空行。如果是的,你可以使用下面方法中的其中一个。有很多方法可以做到,但我在这里只是列举一些简单的方法。

你可能已经知道 grepawk 和 sed 命令是专门用来处理文本数据的工具。

下列 5 种方法可以做到。

◈ sed:过滤和替换文本的流编辑器。

◈ grep:输出匹配到的行。

◈ cat:合并文件并打印内容到标准输出。

◈ tr:替换或删除字符。

◈ awk:awk 工具用于执行 awk 语言编写的程序,专门用于文本处理。

◈ perl:Perl 是一种用于处理文本的编程语言。

我创建了一个 2daygeek.txt 文件来测试这些命令。下面是文件的内容。

 yck@yck-virtual-machine:~$ cat 2dayweek.txt
hello world! can you tell me yout name?

现在一切就绪,我们准备开始用多种方法来验证。

使用 sed 命令

sed 是一个流编辑器stream editor。流编辑器是用来编辑输入流(文件或管道)中的文本的。

 yck@yck-virtual-machine:~$ sed '/^$/d' 2dayweek.txt
hello world!
can you tell me yout name?

以下是命令展开的细节:

◈ sed: 该命令本身。

◈ //: 标记匹配范围。

◈ ^: 匹配字符串开头。

◈ $: 匹配字符串结尾。

◈ d: 删除匹配的字符串。

◈ 2daygeek.txt: 源文件名。

使用 grep 命令

grep 可以通过正则表达式在文件中搜索。该表达式可以是一行或多行空行分割的字符,grep 会打印所有匹配的内容。

 yck@yck-virtual-machine:~$ grep -v "^$" 2dayweek.txt
hello world!
can you tell me yout name?

以下是命令展开的细节:

◈ grep: 该命令本身。

◈ .: 替换任意字符。

◈ ^: 匹配字符串开头。

◈ $: 匹配字符串结尾。

◈ E: 使用扩展正则匹配模式。

◈ e: 使用常规正则匹配模式。

◈ v: 反向匹配。

◈ 2daygeek.txt: 源文件名。

使用 awk 命令

awk 可以执行使用 awk 语言写的脚本,大多是专用于处理文本的。awk 脚本是一系列 awk 命令和正则的组合。

 yck@yck-virtual-machine:~$ awk '!/^$/' 2dayweek.txt
hello world!
can you tell me yout name?

以下是命令展开的细节:

◈ awk: 该命令本身。

◈ //: 标记匹配范围。

◈ ^: 匹配字符串开头。

◈ $: 匹配字符串结尾。

◈ .: 匹配任意字符。

◈ !: 删除匹配的字符串。

◈ 2daygeek.txt: 源文件名。

使用 cat 和 tr 命令 组合

cat 是串联(拼接)concatenate的简写。经常用于在 Linux 中读取一个文件的内容。

cat 是在类 Unix 系统中使用频率最高的命令之一。它提供了常用的三个处理文本文件的功能:显示文件内容、将多个文件拼接成一个,以及创建一个新文件。

tr 可以将标准输入中的字符转换,压缩或删除,然后重定向到标准输出。

 yck@yck-virtual-machine:~$ cat 2dayweek.txt |tr -s '\n'
hello world!
can you tell me yout name?

以下是命令展开的细节:

◈ cat: cat 命令本身。

◈ tr: tr 命令本身。

◈ |: 管道符号。它可以将前面的命令的标准输出作为下一个命令的标准输入。

◈ s: 替换标数据集中任意多个重复字符为一个。

◈ \n: 添加一个新的换行。◈ 2daygeek.txt: 源文件名。

使用 perl 命令

Perl 表示实用的提取和报告语言Practical Extraction and Reporting Language。Perl 在初期被设计为一个专用于文本处理的编程语言,现在已扩展应用到 Linux 系统管理,网络编程和网站开发等多个领域。

 yck@yck-virtual-machine:~$ perl -ne 'print if /\S/' 2dayweek.txt
hello world!
can you tell me yout name?

以下是命令展开的细节:

◈ perl: perl 命令。

◈ n: 逐行读入数据。

◈ e: 执行某个命令。

◈ print: 打印信息。

◈ if: if 条件分支。

◈ //: 标记匹配范围。

◈ \S: 匹配任意非空白字符。

◈ 2daygeek.txt: 源文件名。

linux中删除文件内空白行的几种方法。的更多相关文章

  1. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  2. PHP中获取文件扩展名的N种方法

    PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法:function get_extension($file){substr(strrchr($file, '.'), ...

  3. Linux中删除文件,磁盘空间未释放问题追踪

    在客户使用我们产品后,发现一个问题:在删除了文件后.磁盘空间却没有释放.是有进程在打开这个文件,还是其它情况?我们一起来看看一下两个场景 一. 场景一:进程打开此文件 当一个文件正在被一个进程使用时. ...

  4. (转载)在Linux下删除文件行末尾的^M符号方法

    (转载)http://www.xinfengit.com/200907/1433646.html 由于DOS下的编辑器和linux(linux教程 linux培训 )编辑器对文件行末的回车符处理不一致 ...

  5. Linux中执行shell脚本命令的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  6. linux中删除文件名称乱码

    在最近的操作中发现一些上传的文件有乱码,更改几次都无法正常转换到中文.下面给出正确的解决方案: 使用 ls -i 或者 ls -inum 查找出文件id号(红色字体) [root@localhost ...

  7. java中得到文件MIME类型的几种方法(转)

     本文转载自:http://hotsunshine.iteye.com/blog/857485 使用 javax.activation.MimetypesFileTypeMap 需要引入activat ...

  8. Linux中删除特殊名称文件的多种方式

    今日分享:我们在肉体的疾病方面花了不少钱,精神的病害方面却没有花什么,现在已经到了时候,我们应该有不平凡的学校.--<瓦尔登湖> 前言 我们都知道,在linux删除一个文件可以使用rm命令 ...

  9. linux中的文件权限chmod

    linux中的文件权限chmod ​ 还是GPU集群那点事儿,集群之间磁盘互相挂载,普通用户也可以操作/cu02_nfs./cu04_nfs文件夹,这就牵扯到权限的问题,去google发现所谓的777 ...

随机推荐

  1. CentOS 7运维管理笔记(12)----GUI配置工具Webmin的安装

    早期的Linux系统管理员或是Web管理员在修改服务器配置时使用最多的就是vi编辑器,但是现在越来越多的基于GUI界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...

  2. Ubuntu 18.04 的网络配置

    netplan简介 目前,ubuntu18.04上使用了netplan 作为网络配置工具:在终端上配置网络参数跟之前的版本有比较大的差别 Netplan工作流程如下图所示:通过读取  /etc/net ...

  3. qt中qlineedit和qtextedit右键菜单翻译成中文

    没有linguist和lupdate等命令需要安装Linguist: 在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtco ...

  4. How I explained Design Patterns to my wife: Part 1

    Introduction Me and my wife had some interesting conversations on Object Oriented Design principles. ...

  5. Python学习---重点模块之logging

    日志级别 日志级别  critical > error > warning > info > debug, 默认是从warning开始打印 import logging # 日 ...

  6. tree结构统一修改属性名(递归)

    1 //data为需要修改的tree,这里主要是为antd design 里面select规范数据 const ass = (data) => { let item = []; data.map ...

  7. 使用CSV Data Set Config实现参数化登录

    在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的.这个时候我们就可以使用CSV Data Set Config实现参数化登录: 首先通过Te ...

  8. 【题解】洛谷P2679 [NOIP2015TG] 子串(DP+滚动数组)

    次元传送门:洛谷P2679 思路 蒟蒻一开始并没有思路而去看了题解 我们发现对于两个字串的位置 我们只需要管他们匹配成功或者匹配失败即可 f[i][j][k] 记录当前 a[i]不论等不等于b[j] ...

  9. 51Nod - 1205 (流水先调度)超级经典的贪心 模板题

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1205 N个作业{1,2,…,n}要在由2台机器M1和M2组成 ...

  10. HDU 1078 FatMouse and Cheese ( DP, DFS)

    HDU 1078 FatMouse and Cheese ( DP, DFS) 题目大意 给定一个 n * n 的矩阵, 矩阵的每个格子里都有一个值. 每次水平或垂直可以走 [1, k] 步, 从 ( ...