linux删除文本文件空白行
https://www.zhihu.com/people/chen-kai-84-54-75
在Linux中,可以使用sed命令批量删除文本中的空白行。以下是一个示例命令:
sed -i '/^$/d' filename.txt
这个命令将会删除 filename.txt 文件中所有的空白行,并且直接在原文件中进行修改, -i 参数表示直接在文件中进行修改。
解释一下,sed命令可以用来编辑文本,-i表示直接在原文件中进行修改,/^$/d表示删除空白行。具体来说,/^$/ 是一个正则表达式,表示匹配空白行,d则表示删除匹配到的行。
如果你要处理多个文件,可以使用通配符来匹配文件名,例如:
sed -i '/^$/d' *.txt
这个命令将会匹配所有以 .txt 结尾的文件,并且删除其中的空白行。
可以使用 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 NF filename.txt > newfile.txt
这个命令将会将 filename.txt 文件中除了空白行以外的所有行保存到 newfile.txt 文件中。NF 表示输出非空行,也就是只输出有内容的行。
如果要处理多个文件,可以使用通配符来匹配文件名,例如:
awk NF *.txt > newfile.txt
这个命令将会将所有以 .txt 结尾的文件中除了空白行以外的所有行保存到 newfile.txt 文件中。
可以使用 tr 命令将空白行替换为其他字符,然后使用 grep 命令过滤掉这些字符。具体命令如下:
tr -s '\n' < filename.txt | grep -v '^$' > newfile.txt
这个命令将会将 filename.txt 文件中的所有空白行替换为一个换行符,然后使用 grep 命令过滤掉空白行。-s 参数表示压缩连续的换行符为一个换行符,'^$' 表示匹配空白行。
可以使用 perl 命令来删除空白行。以下是一个示例命令:
perl -i -ne 'print if /\S/' filename.txt
这个命令将会将 filename.txt 文件中除了空白行以外的所有行保存到原文件中。 -i 参数表示直接在原文件中进行修改,/\S/ 表示匹配非空白字符。
如果要处理多个文件,可以使用通配符来匹配文件名,例如:
perl -i -ne 'print if /\S/' *.txt
这个命令将会将所有以 .txt 结尾的文件中除了空白行以外的所有行保存到原文件中。
可以使用 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 文件中。