【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)
描述
写一个 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指只会记录有数据的行
本文来自博客园,作者:哥们要飞,转载请注明原文链接:https://www.cnblogs.com/liujinhui/p/16208199.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix