Linux脚本练习之script064-去掉空行

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本练习之script064-去掉空行相关的知识,希望对你有一定的参考价值。

script064

题目

题目来源于 SHELL6 去掉空行

写一个 bash 脚本以去掉一个文本文件 nowcoder.txt 中的空行。

示例,假设 nowcoder.txt 内容如下:

abc

567


aaa
bbb



ccc

你的脚本应当输出:

abc
567
aaa
bbb
ccc

脚本一

这里采用的是匹配空行然后删除空白行,最后剩下的就是非空行。其中 ^$ 表示匹配空行;d 命令表示删除匹配行。

sed '/^$/d' nowcoder.txt 

脚本二

awk 命令可以找出文件中的非空行,其中 /[^\\s]/ 表示匹配非空行(^\\s 表示匹配以非空字符开头的所有行);然后使用 print $0 表示打印非空行。

awk '/[^\\s]/print $0' nowcoder.txt

脚本三

同样使用正则表达式匹配文件中的非空行,通过 grep -E 命令查找。

grep -E "[^\\s]+" nowcoder.txt 

脚本四

使用 awk 命令完成。

cat nowcoder.txt | awk NF

脚本五

使用 sed 命令只打印匹配到正则表达式的行。

sed -n '/[^$]/p' nowcoder.txt

脚本六

使用 grep 命令匹配空行,然后使用 -v 选项表示反选非空行。

grep -v '^$' nowcoder.txt

脚本七

循环读取文件中的每一行,然后用 -n 判断该行是否是非空行,如果是则进行输出。

#!/bin/bash

i=0
while read line; do
  i=$(($i+1))
  if [ -n "$line" ]; then
      echo "$line"
  fi
done < nowcoder.txt

脚本八

使用 awk 进行编程,通过 length() 函数判断遍历的行是否是非空行,如果是则进行输出。

awk 'if(length($0)!=0) print $0' nowcoder.txt

以上是关于Linux脚本练习之script064-去掉空行的主要内容,如果未能解决你的问题,请参考以下文章

Linux脚本练习之script071-去掉所有包含this的句子

Linux脚本练习之script073-去掉不需要的单词

Linux脚本练习之script073-去掉不需要的单词

Linux脚本练习之script086-etstat练习之查看各个状态的连接数

Linux脚本练习之script086-etstat练习之查看各个状态的连接数

Linux脚本练习之script087-netstat练习之查看和3306端口建立的连接