【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指只会记录有数据的行
【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)的更多相关文章
- linux不知道文件在哪,想查找文件内的字符串
find . -name "*.*" |xargs grep "xxx"
- linux下使用find xargs grep查找文件及文件内容
1,在某个路径下查文件. 在/etc下查找“*.log”的文件 find /etc -name “*.log” 2,扩展,列出某个路径下所有文件,包括子目录. find /etc -name “*” ...
- linux grep 查找文件内容
自试: wang@wang:~$ grep -i "*args*" ~/IGV01-SW/src/bzrobot_diagnostics/bzrobot_lightbelt_man ...
- cat快速查找文件内指定信息
cat log.txt | grep "ERROR" | more 查找 log.txt 文件内 包含 “ERROR” 的信息,分屏显示
- Linux awk+uniq+sort 统计文件中某字符串出现次数并排序
https://blog.csdn.net/qq_28766327/article/details/78069989 在服务器开发中,我们经常会写入大量的日志文件.有时候我们需要对这些日志文件进行统计 ...
- 使用 awk 过滤文本或文件中的字符串
当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分.这时正则表达式就派上用场了. 什么是正则表达式? 正则表达式可以定义为代表若干 ...
- grep 查找文件
--递归查找目录下含有该字符串的所有文件 grep -rn "data_chushou_pay_info" /home/hadoop/nisj/automationDemand/ ...
- 使用grep查找文件中指定字符出现的次数
grep -o ‘好' 文件名.txt | wc -l -o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出.这样只要统计输出的行数就可以知道这个字符出现的次数了.
- Linux查找文件中的字符串命令
grep -nr 'archermind' -r, --recursive Read all files under each directory, recursively, following sy ...
随机推荐
- 清除已安装的rook-ceph集群
官方文档地址:https://rook.io/docs/rook/v1.8/ceph-teardown.html 如果要拆除群集并启动新群集,请注意需要清理的以下资源: rook-ceph names ...
- fastapi教程进阶
一个简单的栗子 from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return ...
- Solutions:网站搜索 - Elastic Site Search
- 计算shell 脚本的执行时间
# shell_time.sh #!/bin/bash UseTime () { startTime_s=`date +%s` # 获取从1970-01-01 00:00:00 UTC到现在的秒数 $ ...
- 监控告警之elastalert部署及配置全解
一.安装elastalert 1.环境 CentOS:7.4 Python:3.6.9 pip:19.3 elastalert:0.2.1 elk:7.3.2 2.配置Python3.6.9环境 安装 ...
- Do not use “@ts-ignore” because it alters compilation errors的解决办法
在@ts-ignore上面添加一行代码: // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore
- Petrozavodsk Winter Training Camp 2016: Moscow SU Trinity Contest
题目列表 A.ABBA E.Elvis Presley G. Biological Software Utilities J. Burnished Security Updates A.ABBA 题意 ...
- 齐博X1-栏目的调用5
本节继续说明栏目的调用父级.同级.子级三层的栏目调用 父级.同级.子级三层的栏目调用 fun('sort@family',$fid,'cms') 比如下面栏目10利用这个函数,就可以调用出 父级9 同 ...
- VS code 如何使用HTML Boilerplate插件
此插件是一个HTML 模版插件,可以摆脱为 HTML 新文件重新编写头部和正文标签的苦恼. 只需在空文件中输入 html,并按 tab 键,即可生成干净的文档结构.也可以输入!,然后按tab键或者en ...
- 【MySQL】01_运算符、函数
运算符 运算符是保留字或主要用于 SQL 语句的 WHERE 子句 中的字符,用于执行操作,例如:比较和算术运算. 这些运算符用于指定 SQL 语句中的条件,并用作语句中多个条件的连词. 常见运算符有 ...