【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)

本文介绍了如何使用Bash脚本来删除文本文件中的空行,提供了四种不同的实现方式:循环+打印非空行、awk正则匹配、grep过滤以及通过管道直接过滤。每种方法都简洁高效,适用于清理含有空行的文本文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述
写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行
示例:
假设 nowcoder.txt 内容如下:
abc

567


aaa
bbb

ccc

你的脚本应当输出:
abc
567
aaa
bbb
ccc

方法1:循环+打印非空的行

【循环读行,只能用while实现】

#!/bin/bash
while read line
do
    if [[ -z $line ]] 
    then
        # 删除空行
        continue
    fi
    echo $line
done < nowcoder.txt

#!/bin/bash
while read line
do
    if [[ $line == '' ]] 
    then
        # 删除空行
        continue
    fi
    echo $line
done < nowcoder.txt

#!/bin/bash
while read line
do
    if [[ $line != '' ]] 
    then
        # 删除空行
        echo $line
    fi
done < nowcoder.txt

方法2:awk实现

思路1:正则匹配空行&打印当前行内容/行号

#!/bin/bash
awk '!/^$/ {print $NF}'
#NF表示读出的行号,加$表示为当前行的内容

方法2:awk执行多条语句(用大括号括起来)

#!/bin/bash
awk '{if($0 != "") {print $0}}' < nowcoder.txt
#NF表示读出的行号,加$表示为当前行的内容

或管道

#!/bin/bash
cat nowcoder.txt | awk '{if($0 != "") {print $0}}'
#NF表示读出的行号,加$表示为当前行的内容

#!/bin/bash
awk '{if($0 != "") {print $0}}' ./nowcoder.txt
#NF表示读出的行号,加$表示为当前行的内容

方法3:grep查找

Linux grep 命令用于查找文件里符合条件的字符串。

-E 使用正则表达式
-v 过滤掉符合pattern的行

#!/bin/bash
grep -Ev '^$'

#!/bin/bash
grep -e '\S'

方法4:通过管道可以直接过滤

#!/bin/bash
cat nowcoder.txt | awk NF

NF指只会记录有数据的行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值