题解 | #去掉空行#
去掉空行
http://www.nowcoder.com/practice/0372acd5725d40669640fd25e9fb7b0f
方法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
或
方法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只会记录有数据的行