[转帖]linux删除文本文件空白行

linux,删除,文本文件,空白行 · 浏览次数 : 0

小编点评

**sed 命令** ```bash sed -i '/^$/d' filename.txt ``` **解释:** * `^` 和 `$` 分别匹配字符串的开头和结尾。 * `/^$/d` 这句正则表达式匹配空白行,即没有任何字符的空白字符。 * `-i` 参数表示直接在原文件中进行修改。 **示例:** 假设 filename.txt 文件中包含以下内容: ``` hello world blank line another line ``` 使用上面的sed命令将删除所有空白行,结果文件的内容将为: ``` hello world another line ``` **grep 命令** ```bash grep -v '^$' filename.txt > newfile.txt ``` **解释:** * `grep` 命令使用 `-v` 参数表示反向选择,匹配不匹配正则表达式的行。 * `'^$'` 正则表达式匹配空白行,即仅匹配空白字符。 * `>` 表示将匹配到的行输出到新的文件中。 **示例:** 假设 filename.txt 文件中包含以下内容: ``` hello world blank line another line ``` 使用上面的grep命令将删除所有空白行,结果文件的内容将为: ``` hello world another line ``` **awk 命令** ```bash awk NF filename.txt > newfile.txt ``` **解释:** * `NF` 表示输出非空行。 * `filename.txt` 输入文件路径。 * `>` 表示将匹配到的行输出到新的文件中。 **示例:** 假设 filename.txt 文件中包含以下内容: ``` hello world blank line another line ``` 使用上面的awk命令将删除所有空白行,结果文件的内容将为: ``` hello world another line ``` **perl 命令** ```bash perl -i -ne 'print if /\\S/' filename.txt ``` **解释:** * `perl` 命令使用 `-i` 参数直接在原文件中进行修改。 * `-ne` 用于非匹配正则表达式的行。 * `print if /\\S/` 这句正则表达式匹配非空白字符。 * `filename.txt` 输入文件路径。 **示例:** 假设 filename.txt 文件中包含以下内容: ``` hello world blank line another line ``` 使用上面的perl命令将删除所有空白行,结果文件的内容将为: ``` hello world another line ```

正文

linux删除文本文件空白行
https://www.zhihu.com/people/chen-kai-84-54-75

 

sed命令

在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令:

sed -i '/^$/d' filename.txt

这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在原文件中进行修改, -i 参数表示直接在文件中进行修改。

解释一下,sed命令可以用来编辑文本,-i表示直接在原文件中进行修改,/^$/d表示删除空白行。具体来说,/^$/ 是一个正则表达式,表示匹配空白行,d则表示删除匹配到的行。

如果你要处理多个文件,可以使用通配符来匹配文件名,例如:

sed -i '/^$/d' *.txt

这个命令将会匹配所有以 .txt 结尾的文件,并且删除其中的空白行。

grep 命令

可以使用 grep 命令来过滤掉空白行,然后将结果输出到一个新文件中。具体命令如下:

grep -v '^$' filename.txt > newfile.txt

这个命令将会将 filename.txt 文件中除了空白行以外的所有行保存到 newfile.txt 文件中。 -v 参数表示反向选择,也就是选择不匹配正则表达式的行,'^$' 表示匹配空白行。

如果要处理多个文件,可以使用通配符来匹配文件名,例如:

grep -v '^$' *.txt > newfile.txt

这个命令将会将所有以 .txt 结尾的文件中除了空白行以外的所有行保存到 newfile.txt 文件中。

还可以使用 grep 命令和正则表达式来删除空白行。以下是一个示例命令:

grep -vE '^[[:space:]]*$' filename.txt > newfile.txt

这个命令将会将 filename.txt 文件中的所有空白行删除。-v 参数表示反向选择,也就是选择不匹配正则表达式的行,-E 参数表示使用扩展的正则表达式,'^[[:space:]]*$' 表示匹配只包含空白字符的行。

如果要处理多个文件,可以使用通配符来匹配文件名,例如:

grep -vE '^[[:space:]]*$' *.txt > newfile.txt

这个命令将会将所有以 .txt 结尾的文件中的所有空白行删除。

awk 命令

awk 命令也可以用来删除空白行。以下是一个示例命令:

awk NF filename.txt > newfile.txt

这个命令将会将 filename.txt 文件中除了空白行以外的所有行保存到 newfile.txt 文件中。NF 表示输出非空行,也就是只输出有内容的行。

如果要处理多个文件,可以使用通配符来匹配文件名,例如:

awk NF *.txt > newfile.txt

这个命令将会将所有以 .txt 结尾的文件中除了空白行以外的所有行保存到 newfile.txt 文件中。

tr 结合 grep 命令

可以使用 tr 命令将空白行替换为其他字符,然后使用 grep 命令过滤掉这些字符。具体命令如下:

tr -s '\n' < filename.txt | grep -v '^$' > newfile.txt

这个命令将会将 filename.txt 文件中的所有空白行替换为一个换行符,然后使用 grep 命令过滤掉空白行。-s 参数表示压缩连续的换行符为一个换行符,'^$' 表示匹配空白行。

perl 命令

可以使用 perl 命令来删除空白行。以下是一个示例命令:

perl -i -ne 'print if /\S/' filename.txt

这个命令将会将 filename.txt 文件中除了空白行以外的所有行保存到原文件中。 -i 参数表示直接在原文件中进行修改,/\S/ 表示匹配非空白字符。

如果要处理多个文件,可以使用通配符来匹配文件名,例如:

perl -i -ne 'print if /\S/' *.txt

这个命令将会将所有以 .txt 结尾的文件中除了空白行以外的所有行保存到原文件中。

paste 命令

可以使用 paste 命令将多个文件合并为一个文件,并且去掉空白行。以下是一个示例命令:

paste -s -d '\n' filename.txt > newfile.txt

这个命令将会将 filename.txt 文件中的所有行合并为一行,并且在每行之间加上一个换行符,然后输出到 newfile.txt 文件中。-s 参数表示将多个文件合并为一个文件,-d '\n' 表示在每行之间加上一个换行符。

如果要处理多个文件,可以使用通配符来匹配文件名,例如:

paste -s -d '\n' *.txt > newfile.txt

这个命令将会将所有以 .txt 结尾的文件中的所有行合并为一个文件,并且在每行之间加上一个换行符,然后输出到 newfile.txt 文件中。

与[转帖]linux删除文本文件空白行相似的内容:

[转帖]linux删除文本文件空白行

https://zhuanlan.zhihu.com/p/627152095 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在

[转帖]linux删除文本文件空白行

linux删除文本文件空白行https://www.zhihu.com/people/chen-kai-84-54-75 sed命令 在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令: sed -i '/^$/d' filename.txt 这个命令将会删除 filena

[转帖]linux下df查看空间已经占用%100,但是找不到大文件的解决方法

https://www.cnblogs.com/leffss/p/8571685.html 有时候在linux下会遇到这种情况:df查看空间已经占用%100,但是找不到大文件,怎么回事呢,经过网上查找资料,得到解决方法: 1.使用lsof查看已删除但未释放的文件 lsof -n | grep del

[转帖]50个应知必会的Linux常识和操作

1.存放用户账号的文件在哪里? /etc/passwd 1 2.如何删除一个非空的目录? rm -rf 目录名 1 3.查看当前的工作目录用什么命令? pwd 1 4.创建一个文件夹用什么命令? mkdir 1 5.哪个Linux命令可以一次显示一页内容?上一页和下一页使用什么命令? more Sp

[转帖]Linux常用命令:利用sed命令删除文件的特定行

http://www.dbs724.com/12806.html 前言 正常来说,我们想要删除文件中的某些行内容,一般都是先打开这个文件,然后找到要删除的内容,再然后选中这些行并按删除键进行删除,这在数据量很少时是没有问题的。但是,一旦文件中的行数据非常多,而且数据冗杂的情况下,你还要用上面的方法去

[转帖]Linux命令之tr命令

一、命令介绍 tr 命令用于转换或删除文件中的字符。tr 指令从标准输入设备读取数据,执行转换(或者压缩、删除)处理,将结果输出到标准输出设备。 二、使用示例 0、示例文件 [root@test1 test]# cat 1.txt The string is used to describe the

[转帖]linux日志 audit

https://www.jianshu.com/p/3e8a1d5d5cb9 我们知道在Linux系统中有大量的日志文件可以用于查看应用程序的各种信息,但是对于用户的操作行为(如某用户修改删除了某文件)却无法通过这些日志文件来查看,如果我们想实现监管企业员工的操作行为就需要开启审计功能,也就是aud

[转帖]如何使用 sed 命令删除文件中的行

https://zhuanlan.zhihu.com/p/80212245 sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。-- Magesh Maruthamuthu(作者) Sed 代表 流编辑器(Stream Editor),常

[转帖]009 Linux 文件大小统计与排序 (du 于 df 和 sort)

https://my.oschina.net/u/3113381/blog/5463932 01 du 与 df 作用与区别? Linux 最有用最常用的统计文件大小命令是什么?无疑就是 du 和 df 了。 du(disk usage) du 能看到的文件只是一些当前存在的,没有被删除的。 df(

[转帖]Linux 学习笔记: shell中${} 的用法,删除&替换

Linux 学习笔记: shell中${} 的用法,删除&替换 字符串的删除 echo${i##*/} 删除 / 前的所有内容 ## 删除 tt=$i echo{tt:22} #取的22位以后的所有字符 file=/dir1/dir2/dir3/my.file.txt ${file#/}:删掉第一个